Как обновить критерии соответствия элементов массива в документе MongoDB? - PullRequest
6 голосов
/ 01 ноября 2011

У меня есть документ с полем массива, похожим на это:

{ 
  "_id" : "....",
  "Statuses" : [
    { "Type" : 1, "Timestamp" : ISODate(...) },
    { "Type" : 2, "Timestamp" : ISODate(...) },
    //Etc. etc.
  ]
}

Как я могу обновить временную метку определенного элемента Status, указав его значение Type?

1 Ответ

17 голосов
/ 02 ноября 2011

Из оболочки mongodb вы можете сделать это по

db.your_collection.update(
    { _id: ObjectId("your_objectid"), "Statuses.Type": 1 },
    { $set: { "Statuses.$.Timestamp": "new timestamp" } }
)

так что c # эквивалент

var query = Query.And(
    Query.EQ("_id", "your_doc_id"),
    Query.EQ("Statuses.Type", 1)
);

var result = your_collection.Update( 
    query, 
    Update.Set("Statuses.$.Timestamp", "new timestamp", UpdateFlags.Multi,SafeMode.True)
); 

Это обновит конкретный документ, вы можете удалить фильтр _id, если вы хотите обновить всю коллекцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...