2016-11-25 80 views
1

我已经检查以下计算器问题:如何使用Mongoose删除JSON对象中的数组元素?

  1. Mongoose delete array element in document and save
  2. How to remove array element in mongodb?

这里是我的尝试:

var User = require('../model/user_model.js'); 

router.put('/favoritemovies/:id', function(req, res){ 
    console.log(req.params.id); 
    console.log(req.body.email);//I am able to console.log both value 

    User.update({_id: req.body.email}, { $pullAll: { favoriteMovies: {id:req.params.id} } } }, 
}); 

我的用户模型:

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema; 
var ObjectId = Schema.ObjectId; 

var userSchema = new Schema ({ 
    id: ObjectId, 
    name: String, 
    password: String, 
    email: {type: String, unique: true}, 
    favoriteMovies: [] 
}); 
module.exports = mongoose.model('users', userSchema); 

这是我的JSON对象的结构:

{ 
    "_id": { 
     "$oid": "583893712f599701531b60bf" 
    }, 
    "name": "", 
    "password": "", 
    "email": "", 
    "favoriteMovies": [ 
     { 
      "vote_average": , 
      "video": , 
      "vote_count": , 
      "popularity": , 
      "backdrop_path": "", 
      "title": "", 
      "original_language": "", 
      "original_title": "", 
      "id": , 
      "genre_ids": [], 
      "release_date": "", 
      "overview": "", 
      "adult": , 
      "poster_path": "", 
      "_id": "" 
     } 

我想删除从favoriteMovies阵列的一个或多个元素,如果其ID我的ID相符。我没有收到任何错误消息,但该元素也不会被删除。

什么是适当的要求,以实现这一目标?

回答

0

我发现了这个问题,我错过了查询结束时的回调函数。

User.update({_id: req.body.email}, { $pull: { favoriteMovies: { id: req.params.id} } 
    }, function(err, model){}) 
1

$pullAll用于从数组中删除多个条目,并在其查询中使用数组。

您只希望删除一个条目,因此只需使用$pull

{ $pull: { favoriteMovies: {id: req.params.id} } } } 
+0

感谢您的答复。不幸的是,它仍然不起作用。我已经检查过所有属性,它应该可以工作,但它不会。 – GaborH

1

它会使用拉,你确定更新条件是正确的?

{_id: req.body.email} 

关于你提到的例子:

"_id": { 
    "$oid": "583893712f599701531b60bf" 
}, 

看来,你应该使用:

{email: req.body.email} 
+0

我已经找到了解决我的问题的方法,只是在这篇文章的上方。无论如何感谢您的输入。 – GaborH

相关问题