您好我是MongoDB和编程新手。我试图删除特定父文档中的特定子文档,我使用Mongoose和Node.js.这是我的架构模型(user.js文件):
var userStuff = mongoose.Schema({
itemName: String,
itemDesc: String
});
var userSchema = mongoose.Schema({
googleEmail: String,
googleName: String,
stuff: [userStuff]
});
exports.user = mongoose.model('User', userSchema);
exports.userStuff = mongoose.model('UserStuff', userStuff);
以下是我尝试删除的方式:
var User = require("../../models/user.js");
...
var userId = req.session.passport.user;
var deleteItemId = req.params.id;
User.user.findOne({_id: userId}, function(err, user){
if(err){
console.log(err);
}else {
User.userStuff.remove({ _id: deleteItemId}, function(err, data){
if(err){
console.log(err);
}else{
user.save(function(err){
if(err){
console.log(err);
} else {
res.status(200).send();
}
});
}
});
}
});
您能说明如何删除特定用户的特定项目吗?
答案 0 :(得分:4)
要删除特定用户的特定项,可以使用 $pull
运算符删除带有原子更新的子文档:
User.user.update(
{ "_id": req.session.passport.user },
{ "$pull": { "stuff": { "_id": req.params.id } } },
function(err, numAffected) {
if(err){
console.log(err);
} else {
res.status(200).send();
}
}
);