我有架构mongoose
var postSchema = new Schema({
comments: [{
nickName: {type: String, required: true},
comment: {type: String, required: true}
}]
});
然后我想提出一条评论意见
Post.findOneAndUpdate({'_id': req.body._id}, {$pull: {'comments': {'_id': req.body._idComment} }},
function(err, data) {
if (err) {
res.send({status:400});
} else {
// how get $pull object if I don't know index of element of array
// data returns all objects
}
});
答案 0 :(得分:0)
没有直接的方法可以做到这一点。但是它的解决方法很少。 更新数据(我的意思是删除它),如果它成功,那么你知道你删除元素的输入就是你的答案。
Post.update({'_id': req.body._id},
{$pull: {'comments': {'_id': req.body._idComment} }},function(err, data) {
....
....
});
您还可以运行find
查询来检查您的数据是否已删除,这也会确认您删除的数据。
否则findOneAndUpdate
会使用{new:True}
选项返回更新后的文档,您可以将输入与返回的文档进行比较,以获取已删除的数据。