更新MongoDB中的内部集合

时间:2014-02-13 18:10:23

标签: c# linq mongodb

我有一个如下所示的文档集合,如果值存在,我需要检查内部集合RuleList然后更新集合,或者使用mongodb c#将新项目插入到集合RuleList中。我能够通过objectId查询更新RuleName和RuleDesc。

{
    "_id": ObjectId("4fb21439f31dfd122ce39c4a"),
    "RuleName": "Rule 1",
    "RuleDesc": "Rule for log"
    "RulesList":[{
        "No" : "1",
        "Name" : "LogRule",
        "Field" : "Log"},{
        "No" : "2",
        "Name" : "IDRule",
        "Field" : "IDEntry"}]
}

1 个答案:

答案 0 :(得分:0)

在C#中执行此操作的最简单方法是使用官方Mongo DB C#驱动程序中的 BsonDocument 类(http://www.nuget.org/packages/mongocsharpdriver/

对于集合中的每个文档,您需要先使用“RulesList” AsBsonArray 。在BsonArray上,您可以执行LINQ查询。

对于上面的文档,您要检查“RuleList”数组中的任何项是否在“Field”属性中具有“Log”值?

  var result = document["RulesList"].AsBsonArray.Any(b => b["Field"].AsString == "Log");
  if (result)
  {
     //do update
  }
  else
  {
     //do insert
  }