猿问

禁用 Go mongo bson 地图中的某些字段

我正在使用"go.mongodb.org/mongo-driver/bson"

有没有办法能够禁用字段,但仍然是有效的 bson 映射?


publishFilter := bson.M{}


if publishedOnly {

    publishFilter = bson.M{"published": true}

}


pipeline := []bson.M{

    {"$sort": bson.M{"_id": -1}},

    {

        "$match": bson.M{

            "_id": bson.M{

                "$gt":  sinceObjectID,

                "$lte": maxObjectID,

            },

            publishFilter, // I want to control this to be nothing or `{"published": true}`

            // depending on `publishedOnly`

        },

    },

    {"$limit": query.Count},

}

这段代码绝对不能编译Missing key in map literal


哔哔one
浏览 113回答 1
1回答

慕沐林林

您无法“禁用”地图中的字段,但可以$match有条件地构建文档:matchDoc := bson.M{    "_id": bson.M{        "$gt":  sinceObjectID,        "$lte": maxObjectID,    },}if publishedOnly {    matchDoc["published"] = true}pipeline := []bson.M{    {"$sort": bson.M{"_id": -1}},    {"$match": matchDoc},    {"$limit": query.Count},}
随时随地看视频慕课网APP

相关分类

Go
我要回答