mongodb - 如何使用 golang mongo-driver 仅返回来自 mongodb 的部分结果

标签 mongodb go bson

我想创建一个对象数组,但只能使用过滤后的键值列表。

    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/

相关文章:

javascript - 尝试在前端显示图像(使用react native,nodejs和amazon s3)

go - 处理错误很无聊

websocket - 如何将Vec <u8>转换为bson::document::Document?

mongodb - 如何从 mongodb 游标获取文档集合?

java - 为什么bson java实现使用4字节inc字段?

mongodb - 在 MongoDB 中查找共享一个键值的两个文档

python - mongoengine 默认超时配置

mongodb - Mgo 即使不为空也会省略字段

去库自动化

Goland:如何使用自定义 modfile 而不是 go.mod?