2012-06-21 2 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; 
      } 
      } 
     } 
     }) 
    }) 
    }) 
} 
관련 문제