2012-06-21 134 views
0

所以我有一個包含項目數組的播放列表文檔。現在我想添加一個投票數組到項目,但我不知道如何做到這一點。目前,這是我怎麼添加新項...如何更新MongoDB + Node.js中的嵌套數組

playlist_collection.update(
    {"PlaylistName": playlistName}, 
    {"$push": {items: newitem}}, 
    function(error, playlist){ 
    if(error) callback(error); 
    }); 

我知道有這個幾個職位,如果有一個很好的例子重複的罰款。

這裏是在db

{ "PlaylistName" : "MyFirstPlaylist", 
    "_id" : ObjectId("4fe0c6570fb2321b39000001"), 
    "comments" : [ ], 
    "created_at" : ISODate("2012-06-19T18:35:03.462Z"), 
    "items" : [ 
     {  "SongName" : "Test", "Location" : "/tmp/40dd4f78466c3c7171f1eaf448e8f1d6" } 
    ] 
} 

回答

0

我結束了使用此對象....

PlaylistProvider.prototype.addVoteToItem = function(, itemname, vote, callback) { 
    this.getCollection(function(error, collection) { 
    collection.findOne({'PlaylistName':playlistName}, function (err, playlist) { 
     if(err) callback(err); 
     playlist.items.forEach(function (item) { 
     for (var prop in item) { 
      if (prop == 'SongName'){ 
      if(item[prop] == itemname){ 
       console.log("Found "+item[prop]) 
       if(item.votes === undefined) item.votes = []; 
      item.votes.push(vote) 
       collection.save(playlist) 
       callback(null, playlist) 
       break; 
      } 
      } 
     } 
     }) 
    }) 
    }) 
}