2012-06-21 4 views
0

Итак, у меня есть файл списка воспроизведения, который включает в себя массив элементов. Теперь я хочу добавить массив голосов к элементу, но я не уверен, как это сделать. В настоящее время это, как я добавить новый элемент ...Как обновить вложенный массив в MongoDB + Node.js

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

Я знаю, что есть еще несколько сообщений об этом, так что если есть хороший пример дубликат прекрасно.

Вот объект в БД

{ "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; 
      } 
      } 
     } 
     }) 
    }) 
    }) 
} 
Смежные вопросы