我想创建一个对象数组,但只能使用过滤后的键值列表。
collection, err := driver.GetDBCollection()
cur, err := collection.Find(context.Background(), bson.D{{}})
if err != nil {
log.Fatal(err)
}
var results []primitive.M
for cur.Next(context.Background()) {
var result bson.M
e := cur.Decode(&result)
if e != nil {
log.Fatal(e)
}
results = append(results, result)
}
假设我在 mongodb 中的数据如下所示:
[
{
"_id": "123456",
"username": "username1",
"password": "hashedPassword",
"token": "theToken"
},
{
"_id": "123456",
"username": "username2",
"password": "hashedPassword",
"token": "theToken"
},
{
"_id": "123456",
"username": "username3",
"password": "hashedPassword",
"token": "theToken"
},
{
"_id": "123456",
"username": "username4",
"password": "hashedPassword",
"token": "theToken"
}
]
我目前在上面的内容将返回所有这些,但如果我不想公开某些字段,我将如何从仅选择的键中返回所有结果,例如不包括密码和 token ,如下所示:
[
{
"_id": "123456",
"username": "username1"
},
{
"_id": "123456",
"username": "username2"
},
{
"_id": "123456",
"username": "username3"
},
{
"_id": "123456",
"username": "username4"
}
]
引用:
https://godoc.org/go.mongodb.org/mongo-driver/mongo
最佳答案
对于其他找不到这个的人,这里是解决方案,它没有很好的记录:
opts := options.Find().SetProjection(bson.M{
"_id": 1,
"username": 1,
})
cur, err := collection.Find(context.Background(), bson.D{{}}, opts)
关于mongodb - 如何使用 golang mongo-driver 仅返回来自 mongodb 的部分结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211041/