2014-02-13 4 views
0

У меня есть коллекция документов, как указано ниже. Мне нужно проверить внутреннюю коллекцию RuleList, если значение существует, а затем обновить коллекцию или вставить новый элемент в коллекцию RuleList с помощью mongodb C#. Я смог обновить RuleName и RuleDesc по запросу с помощью objectId.Обновление внутренней коллекции в 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 класса от Official Монго DB C водителя (http://www.nuget.org/packages/mongocsharpdriver/)

# Для каждого документа в коллекции, вы должны сначала принять "RulesList" AsBsonArray. В BsonArray вы можете выполнить запрос LINQ.

Скажите, пожалуйста, что для этого документа вы хотите проверить, имеет ли какой-либо элемент внутри массива «RuleList» значение «Log» в свойстве «Поле»?

var result = document["RulesList"].AsBsonArray.Any(b => b["Field"].AsString == "Log"); 
    if (result) 
    { 
    //do update 
    } 
    else 
    { 
    //do insert 
    } 
Смежные вопросы