2014-02-13 77 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 
    }