使用$或使用MongoDB聚合查询中的数组

时间:2014-12-05 23:52:57

标签: c# mongodb aggregation-framework

我正在尝试使用$或语句在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 }).

在此查询中是否有一种特定的方法可以使用我缺少的数组?

1 个答案:

答案 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 } };

按照我的希望工作。