2014-02-13 5 views
0

다음과 같은 문서 컬렉션이 있습니다. 값이 존재하면 내부 컬렉션 RuleList를 확인한 다음 컬렉션을 업데이트하거나 mongodb C#을 사용하여 컬렉션 항목을 컬렉션 RuleList에 삽입해야합니다. objectId를 사용하여 RuleName 및 RuleDesc를 쿼리로 업데이트 할 수있었습니다. 이 작업을 수행 할MongoDB의 내부 컬렉션을 업데이트하십시오.

C#에서
{ 
    "_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

에게 간단한 방법은, 먼저 "RulesList"를 취할 필요가 컬렉션의 각 문서의 공식 몽고 DB C#을 드라이버 (http://www.nuget.org/packages/mongocsharpdriver/)

에서 BsonDocument 클래스를 사용하는 것입니다 AsBsonArray. BsonArray에서 LINQ 쿼리를 수행 할 수 있습니다.

위의 문서에서 "RuleList"배열의 항목에 "Field"속성에 "Log"값이 있는지 확인하고 싶습니다.

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