2014-02-13 50 views
0

我有一个像下面给出的文档集合,如果存在值,我需要检查内部集合RuleList,然后更新集合或使用mongodb c#将新项目插入集合RuleList。我能够通过查询objectId来更新RuleName和RuleDesc。执行此操作在MongoDB中更新内部集合

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

我编辑了您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

回答

0

在C#中最简单的方法是使用BsonDocument类从官方蒙戈DB C#驱动程序(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 
    }