2012-03-05 5 views
0

albums配列の "album1"を "my album"に設定するにはどうすればよいですか?私はその_idしか知りません。配列内のフィールドを更新するMongoDB

{ 
    "_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

答えて

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" 
    }] 
} 

及び位置演算子使用更新:埋め込まれた要素に_idを使用することで最高の混乱であること

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

注意。

+0

ありがとうございます!!私は後で試してみます! – tonilin

関連する問題