我正在尝试通过其 _id
从 Mongoose 的数组模型中删除元素。同样的技术在我的代码中的其他地方也有效,但在这里它无法删除该元素。经过几个小时的尝试更改其各个部分后,我终于将其发布在这里,因为也许我 sleep 不足是主要原因。有人可以找出我做错了什么吗?
ABC.findOne({
'user': new ObjectId(req.decoded._id),
'activity.ride': new ObjectId(id)
}, {
'activity.$': 1
}, function(err, doc) {
if (doc !== null) {
for (var j = 0; j < doc.activity.length; j++) {
var request = JSON.parse(JSON.stringify(doc.activity[j]));
doc.activity.remove(request._id);
doc.save();
}
}
});
这是模型:
var activityItem = mongoose.Schema({
timestampValue: Number,
xabc: String,
full: Boolean,
comp: Boolean
});
var ABC = mongoose.Schema({
activity: [activityItem],
user: {
type: mongoose.Schema.ObjectId,
ref: 'User'
},
username: String
});
最佳答案
$pull
运算符从现有数组中删除与指定条件匹配的一个或多个值的所有实例。并通过 findOneAndUpdate
从数组中删除元素
ABC.findOneAndUpdate({'user': new ObjectId(req.decoded._id)},
{$pull: {activity: {_id: request._id}}},
{new: true},
function(err, a) {
if (err)
console.log(err);
else
console.log(a);
});
顺便说一句,我在 activityItem
架构中没有找到 ride
,因此我从查询条件中删除了 ride
。
关于javascript - 无法从 Mongoose 数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35565415/