如何更新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