2011-11-01 72 views
2

我有一个数组字段的文件,与此类似:如何更新MongoDB文档中符合条件的数组元素?

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

我怎样才能通过指定类型的值更新特定状态的项目的时间戳,?

回答

12

从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过滤器,如果你想更新整个集合做到这一点

+0

这是完美的,谢谢! – Redth

+0

@Redth,很高兴它帮助..你可以将它标记为答案,如果它的工作... – RameshVel

+0

对不起,我以为我确实把它标记为答案!再次感谢! – Redth

相关问题