2014-09-27 38 views
0

我有個問題。我的數據是這樣的:
如何在MongoDB上進行復雜更新

{ 
    "name" : "username", 
    "surname" : "surname", 
    "playlists": { 
    "name": "playlistName", 
    "date": "27-09-14", 
    "musics": [ 
     "music name 1", 
     "music name 2" 
    ] 
    }, 
    "playlists": { 
    "name": "playlistName2", 
    "date": "27-09-14", 
    "musics": [ 
     "music name 1", 
     "music name 2" 
    ] 
    } 

} 


我想部分增加一個「播放列表」這一數據。
我的數據應該是這樣的:

{ 
    "name" : "username", 
    "surname" : "surname", 
    "playlists": { 
    "name": "playlistName", 
    "date": "27-09-14", 
    "musics": [ 
     "music name 1", 
     "music name 2" 
    ] 
    }, 
    "playlists": { 
    "name": "playlistName2", 
    "date": "27-09-14", 
    "musics": [ 
     "music name 1", 
     "music name 2" 
    ] 
    }, 
    "playlists" : { 
    "blabla" : "blabla" 
    } 

} 

更新查詢沒有工作。
我該怎麼辦?提前致謝。
我試圖

$ dbData =陣列( '$組'=>數組( '播放列表'=>數組( '布拉布拉'=> '布拉布拉'))); $ array-> update(array('_ id'=> new MongoId('541f0e2216c8272c058b4567')), $ dbData);

+0

向我們展示一些代碼。你打算怎麼做? – Crasher 2014-09-27 19:39:41

+0

你的意思是你想添加另一個播放列表到你的數據中存在的播放列表? 或只是想添加另一個數組? – Milad 2014-09-27 19:45:48

+0

更容易告訴我們你需要什麼 – Milad 2014-09-27 19:46:30

回答

0

此外,它可能有多個相同的密鑰,但不建議(你有2 playlists鍵,並希望更多)。

一個合理的解決方案是將playlists作爲數組並將元素推入其中。

{ 
    "name" : "username", 
    "surname" : "surname", 
    "playlists": [...] 
} 

$dbData = array('$push' => array('playlists' => array ('blabla' => 'blabla'))); 
$users->update(array('_id' => new MongoId ('541f0e2216c8272c058b4567')), $dbData);