我已经检查了以下stackoverflow问题:
以下是我的尝试:
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public Conversation(String subject) {
this.subject = subject;
}
public Conversation() {
}
}
我的用户模型:
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} } } },
});
这是我的JSON对象的结构:
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);
我想删除favoriteMovies数组中的一个或多个元素,如果它们的ID为'匹配我的身份证。我没有收到任何错误消息,但该元素也没有删除。
实现这一目标的正确要求是什么?
答案 0 :(得分:2)
$pullAll
用于从数组中删除多个条目,并在其查询中使用数组。
您只想删除一个条目,因此只需使用$pull
。
{ $pull: { favoriteMovies: {id: req.params.id} } } }
答案 1 :(得分:1)
使用pull会有效,你确定更新条件是否正确?
roles
关于你的例子:
{_id: req.body.email}
您似乎应该使用:
"_id": {
"$oid": "583893712f599701531b60bf"
},
答案 2 :(得分:0)
我发现了问题,我错过了查询结束时的回调函数。
User.update( {_id: req.body.email}, { $pull: { favoriteMovies: { id: req.params.id} }
}, function(err, model){})