2014-05-24 243 views
0
刪除數組對象

我有以下模式:MongoDB的:在貓鼬

var userSchema = mongoose.Schema({ 

    local   : { 
     email  : String, 
     password  : String, 
     movies  : [{ 
          moviename : String, 
          rating  : Number 
         }], 
    } 

}); 

而且我用下面的方法來條目添加到陣列:

user.local.movies.push({ moviename : "Top Gun", rating  : 80}); 
user.save(function (err) { 
       if (err) 
        console.log("Error in saving"); 

       res.end(0); 
      }); 

但我需要刪除條目太。我需要能夠通過「電影名稱」名稱刪除條目。 我嘗試使用

user.local.movies.pull({ moviename : "Top Gun"}); 

,但沒有奏效。

有人請讓我知道如何從數組中刪除條目?

謝謝。

+0

你叫'保存()'拉()''後? –

+0

是的,我願意。與我爲Push所做的一樣。 – madu

回答

2

我覺得它更容易使用明確update呼叫,而不是貓鼬的數組操作方法不總是在工作時會期望:

User.update({_id: user._id}, 
    {$pull: {'local.movies': {moviename: 'Top Gun'}}}, callback); 
1

這樣做的一種方法是使用splice函數從數組中刪除元素,假設您可以找到索引。因此,例如:

User.findOne(function(err, user) { 
    var movies, index; 

    movies = user.movies; 

    for (index = 0; index < movies.length; index++) { 
     if (movies[index].moviename === "Top Gun") { 
      break; 
     } 
    } 
    if (index !== movies.length) { 
     movies.splice(index, 1); 
    } 

    user.save(function(err, user) { 
     res.send(user); 
    }); 

}); 

(要知道,上面的代碼做這行只有一個用戶,並且硬編碼的電影名稱刪除,但你的想法。)