我正在尝试使用$或语句在MongoDB C#聚合查询中使用数组。我的代码如下:
var groupsArray = new BsonArray
{new BsonDocument { { "role", 1 } },
new BsonDocument { { "role", 2 } },
new BsonDocument { { "role", 3 } }
};
var bsonOr = new BsonDocument
{
{
"$or",
groupsArray
}
};
var match = new BsonDocument { { "$match",
new BsonDocument { { "$or", bsonOr } } } };
但是,我遇到以下异常:
MongoDB.Driver.MongoCommandException:
Command 'aggregate' failed: exception: bad query:
BadValue $or needs an array (response:
{ "errmsg" : "exception: bad query: BadValue $or needs an array",
"code" : 16810, "ok" : 0.0 }).
在此查询中是否有一种特定的方法可以使用我缺少的数组?
答案 0 :(得分:2)
or
被添加两次。代码已更改为
var groupsArray = new BsonArray();
foreach (var g in groups)
{
groupsArray.Add(new BsonDocument() { { "role", g.Id.ToString() } });
}
var bsonOr = new BsonDocument
{
{
"$or",
groupsArray
}
};
var match = new BsonDocument { { "$match", bsonOr } };
按照我的希望工作。