英文:
Golang mgo result into simple slice
问题
我对Go和MongoDB都比较新手。我试图从数据库中选择一个字段,并将其保存在一个int切片中,但没有成功。
userIDs := []int64{}
coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&userIDs)
上述代码打印出一个空切片。然而,如果我创建一个具有单个ID
字段的结构体,并进行编组,那么它就可以正常工作。
我只是想使用一个包含所需ID的简单切片,而不是一个只有一个字段的结构体。非常感谢您的帮助。
英文:
I'm fairly new to both Go and MongoDB. Trying to select a single field from the DB and save it in an int slice without any avail.
userIDs := []int64{}
coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&userIDs)
The above prints out an empty slice. However, if I create a struct with a single ID
field that is int64 with marshalling then it works fine.
All I am trying to do is work with a simple slice containing IDs that I need instead of a struct with a single field. All help is appreciated.
答案1
得分: 3
因为mgo查询返回的是文档,所以需要几行代码来实现目标:
var result []struct{ UserID int64 `bson:"userid"` }
err := coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&result)
if err != nil {
// 处理错误
}
userIDs := make([]int64, len(result))
for i := range result {
userIDs[i] = result[i].UserID
}
请注意,这是一段Go语言代码,用于使用mgo库执行查询操作。它从数据库中选择未删除的文档,并将结果存储在result
变量中。然后,它将result
中的UserID
字段提取出来,并存储在userIDs
切片中。
英文:
Because mgo queries return documents, a few lines of code is required to accomplish the goal:
var result []struct{ UserID int64 `bson:"userid"` }
err := coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&result)
if err != nil {
// handle error
}
userIDs := make([]int64, len(result))
for i := range result {
userIDs[i] = result.UserID
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论