Son*_*ryr 7 arrays mongoose mongodb node.js
我正在尝试使用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' },
}]
});
Run Code Online (Sandbox Code Playgroud)
一个可能的条目可以
{
//irrelevant fields
"divers": [
{
"_id": "012345678",
"user": "123456789",
"meetingLocation": "carpool",
"exercise": "34567890",
},
{
"_id": "012345679",
"user": "123456780",
"meetingLocation": "onSite",
"exercise": "34567890",
}
]
}
Run Code Online (Sandbox Code Playgroud)
说我要删除的条目,其中user
的123456789
(请注意,我不知道_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
});
});
Run Code Online (Sandbox Code Playgroud)
这没有改变文件.
我也试过了
Dive.update({ _id: diveId }, { "$pull": { "divers": { "diver._id": new ObjectId(userIdToRemove) } } }, { safe: true }, function(err, obj) {
//do something smart
});
Run Code Online (Sandbox Code Playgroud)
有了这个,我得到了整个divers
阵列在给定的潜水中被清空的结果.
Rah*_*mar 17
那这个呢?
Dive.update({ _id: diveId }, { "$pull": { "divers": { "user": userIdToRemove } }}, { safe: true, multi:true }, function(err, obj) {
//do something smart
});
Run Code Online (Sandbox Code Playgroud)
小智 6
我使用这段代码解决了这个问题 -
await Album.findOneAndUpdate(
{ _id: albumId },
{ $pull: { images: { _id: imageId } } },
{ safe: true, multi: false }
);
return res.status(200).json({ message: "Album Deleted Successfully" });
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8157 次 |
最近记录: |