2012-03-05 110 views
0

如何在albums數組中將「album1」設置爲「我的相冊」?我只知道它的_idMongoDB更新數組中的字段

{ 
    "_id": ObjectId("4f41a5c7c32810e404000000"), 
    "albums": { 
    "0": { 
     "_id": ObjectId("4f545d1bc328103812000000"), 
     "name": "album1" 
    }, 
    "1": { 
     "_id": ObjectId("4f545f56c328103c12000000"), 
     "name": "album2" 
    }, 
    "2": { 
     "_id": ObjectId("4f545f68c328103012000000"), 
     "name": "album3" 
    }, 
    "3": { 
     "_id": ObjectId("4f546642c328103c12000001"), 
     "name": "album4" 
    } 
} 
+0

閱讀本文http://www.mongodb.org/display/DOCS/Updating#Updating – Anshul 2012-03-05 11:14:35

回答

0

您的模式不正確。如果你需要一個數組,你應該這樣定義它,而不是使它成爲一個映射(這是因爲你的數組索引實際上是鍵)。

轉換爲一個數組:

{ 
    "_id": ObjectId("4f41a5c7c32810e404000000"), 
    "albums": [ 
    { 
     "_id": ObjectId("4f545d1bc328103812000000"), 
     "name": "album1" 
    }, 
    { 
     "_id": ObjectId("4f545f56c328103c12000000"), 
     "name": "album2" 
    }, 
    { 
     "_id": ObjectId("4f545f68c328103012000000"), 
     "name": "album3" 
    }, 
    { 
     "_id": ObjectId("4f546642c328103c12000001"), 
     "name": "album4" 
    }] 
} 

,然後使用位置操作者更新:

db.col.update({'albums._id':..}, {$set:{'albums.$.name':"My Album"}}) 

。注意,在一個嵌入元件使用_id是混亂的最好的。

+0

非常感謝!!我會嘗試以後! – tonilin 2012-03-05 15:34:58