使用mgo在golang中从Mongodb选择列

16

据我所知,我们可以使用

> db['twitter-3'].find({}, {"text": 1})

选择集合中所有文本。

我们如何使用mgo在golang中查找特定字段?我尝试过

var result []string
err = conn.Find(bson.M{}, bson.M{"text", 1}).All(&result)

但这是不正确的。

3个回答

26

使用查询Select方法指定要返回的字段:

var result []struct{ Text string `bson:"text"` }
err := c.Find(nil).Select(bson.M{"text": 1}).All(&result)
if err != nil {
    // handle error
}
for _, v := range result {
     fmt.Println(v.Text)
}
在这个例子中,我声明了一个匿名类型,只选择了一个字段。使用包含所有文档字段的类型也是可以的。
在这个例子中,我声明了一个匿名类型,只选择了一个字段。使用包含所有文档字段的类型也是可以的。

在这个结构中,bson:"text"代表什么?有没有相关的参考资料可以查阅以便更好地理解它? - Wyatt
1
请查看bson包文档,了解该包如何使用字段标签。 - Charlie Tumahai
1
谢谢!如何选择多列?仅添加Select(bson.M {"text": 1、"anotherColumn":1})是无效的。 - Amol
为什么 type map[][] 返回的不是 JSON? - muthukumar selvaraj

2

选择多个字段:

var result []struct{
    Text string `bson:"text"`
    Otherfield string `bson:"otherfield"`
}

err := c.Find(nil).Select(bson.M{"text": 1, "otherfield": 1}).All(&result)
if err != nil {
   // handle error
}
for _, v := range result {
    fmt.Println(v.Text)
}

0
var result interface{}
err = c.Find(nil).Select(bson.M{"text": 1}).All(&result)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接