我正在使用"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
您无法“禁用”地图中的字段,但可以有条件地构建$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},
}