如何更新MongoDB文档中的数组元素匹配条件?
我有一个带有数组字段的文档,类似于:如何更新MongoDB文档中的数组元素匹配条件?,mongodb,Mongodb,我有一个带有数组字段的文档,类似于: { "_id" : "....", "Statuses" : [ { "Type" : 1, "Timestamp" : ISODate(...) }, { "Type" : 2, "Timestamp" : ISODate(...) }, //Etc. etc. ] } 如何通过指定特定状态项的类型值来更新其时间戳?在mongodb shell中,您可以通过 db.your_collection.update(
{
"_id" : "....",
"Statuses" : [
{ "Type" : 1, "Timestamp" : ISODate(...) },
{ "Type" : 2, "Timestamp" : ISODate(...) },
//Etc. etc.
]
}
如何通过指定特定状态项的类型值来更新其时间戳?在mongodb shell中,您可以通过
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是否有任何方法更新整个对象,除了它的id?值得一提的是,它将只更新第一个匹配的元素。