2011-11-01 100 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

相關問題