如何更新MongoDB文档中符合标准的数组元素?

我有一个数组字段的文档,类似于:

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

如何通过指定其Type值来更新特定状态项目的Timestamp?

从mongodbshell你可以做到这一点

 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) ); 

这将更新特定的文档,如果你想更新整个集合,你可以删除_idfilter