gpt4 book ai didi

arrays - 如何使用 Mongoose 从数组中删除对象

转载 作者:可可西里 更新时间:2023-11-01 09:07:18 26 4
gpt4 key购买 nike

我正在尝试使用 mongoose 从文档中的数组中删除一个对象。

架构如下:

var diveSchema = new Schema({
//irrelevant fields
divers: [{
user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
meetingLocation: { type: String, enum: ['carpool', 'onSite'], required: true },
dives: Number,
exercise: { type: Schema.Types.ObjectId, ref: 'Exercise' },
}]
});

可能的条目可以是

{
//irrelevant fields
"divers": [
{
"_id": "012345678",
"user": "123456789",
"meetingLocation": "carpool",
"exercise": "34567890",
},
{
"_id": "012345679",
"user": "123456780",
"meetingLocation": "onSite",
"exercise": "34567890",
}
]
}

假设我想删除 user123456789 的条目(注意此时我不知道 _id)。

如何正确执行此操作?

我尝试了以下方法:

        var diveId = "myDiveId";
var userIdToRemove = "123456789"
Dive.findOne({ _id: diveId }).then(function(dive) {
dive.divers.pull({ user: userIdToRemove });
dive.save().then(function(dive) {
//do something smart
});
});

这不会在文档中产生任何变化。

我也试过

Dive.update({ _id: diveId }, { "$pull": { "divers": { "diver._id": new ObjectId(userIdToRemove) } } }, { safe: true }, function(err, obj) {
//do something smart
});

我得到的结果是整个 divers 数组对于给定的潜水被清空。

最佳答案

这个呢?

Dive.update({ _id: diveId }, { "$pull": { "divers": { "user": userIdToRemove } }}, { safe: true, multi:true }, function(err, obj) {
//do something smart
});

关于arrays - 如何使用 Mongoose 从数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40588709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com