Golang mgo结果变成了简单的切片

时间:2015-12-02 00:11:44

标签: mongodb go unmarshalling mgo

我对Go和MongoDB都很新。尝试从数据库中选择一个字段并将其保存在int切片中,但没有任何效果。

userIDs := []int64{}

coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&userIDs)

以上打印出一个空切片。但是,如果我使用单个ID字段创建一个带有编组的int64的结构,那么它可以正常工作。

我想要做的就是使用一个包含我需要的ID的简单切片,而不是一个带有单个字段的结构。感谢所有帮助。

1 个答案:

答案 0 :(得分: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 {
    // handle error
}
userIDs := make([]int64, len(result))
for i := range result {
    userIDs[i] = result.UserID
}