C# 更新MongoDB中的内部集合

C# 更新MongoDB中的内部集合,c#,linq,mongodb,C#,Linq,Mongodb,我有一个如下所示的文档集合,我需要检查内部集合规则列表(如果值存在),然后更新集合,或者使用mongodb c#将新项插入集合规则列表。我能够通过查询使用objectId更新RuleName和RuleDesc { "_id": ObjectId("4fb21439f31dfd122ce39c4a"), "RuleName": "Rule 1", "RuleDesc": "Rule for log" "RulesList":[{ "No" : "1"

我有一个如下所示的文档集合,我需要检查内部集合规则列表(如果值存在),然后更新集合,或者使用mongodb c#将新项插入集合规则列表。我能够通过查询使用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"}]
}
在C#中,执行此操作的最简单方法是使用官方Mongo DB C#driver()中的BsonDocument

对于集合中的每个文档,您需要首先将“RulesList”作为bsonarray。在BsonArray上,您可以执行LINQ查询

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

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

我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。