使用MongoDB C#驱动程序查询数组数组

时间:2014-09-08 15:15:48

标签: c# arrays mongodb mongodb-.net-driver mongodb-query

我的文档如下:

"ID" : "fruit1",
"Keys" : [
           ["apple", "carrot"]
           ["banana"]
         ]

如何使用MongoDB C#驱动程序查询Keys =“carrot”?

我可以在shell中执行:

db.multiArr.find({'Keys':{$elemMatch:{$elemMatch:{$in:['carrot']}}}})

我是从这里找到的:Querying an array of arrays in MongoDB

但我没有成功用c#driver写它。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情。

注意:我没有测试过。

MongoClient client = new MongoClient(); // connect to localhost
MongoServer server = client.GetServer();
var db = server.GetDatabase("foo");
var col = db.GetCollection<RawBsonDocument>("multiArr");

// Query = {'Keys':{$elemMatch:{$elemMatch:{$in:['carrot']}}}}
BsonDocument query = new BsonDocument{ 
    "Keys", new BsonDocument {
      "$elemMatch", new BsonDocument {
          "$elemMatch", new BsonDocument {
              "$in", new BsonArray().Add("carrot")
          }
      }
    }
};
col.Find(query);

更多信息:http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#csharp-driver-tutorial

答案 1 :(得分:0)

我成功了一些不太生动的东西:

var q = Query.ElemMatch("Keys", Query.In("$elemMatch", new List<BsonValue> { "carrot" }));