我有一个这样的架构:
var TestSchema = new Schema({
name: String,
ex: String,
data: [{type: Schema.ObjectId, ref: 'Data'}]
});
var Test = mongoose.model("Test", TestSchema);
在RoboT中看起来像这样:
我要做的是通过ID删除数据。我正在这样做:
Test.update({}, {$pull: {data: idD }}, function(err, test) {
if (err) {
res.send(err);
}
res.send({
success: true
})
});
其中idD是我要删除的数据ID。在此之前,我只是做一个简单的
Data.deleteOne({_id: idD}, function...
并且它可以正常工作,但是如果我刷新数据库,则带有idD的数据仍然存在于“测试模式”的数据数组中。 我也尝试过:
Test.update({}, {$pull: {data: {_id:idD }},
Test.update({}, {$pull: {data: {_id: mongoose.Types.ObjectId(idD)}}},
但没有任何效果。
答案 0 :(得分:1)
您必须使用multi:更新多个文档时为true。
Test.update({}, {$pull: {data: idD },{multi: true}, function(err, test) {
if (err) {
res.send(err);
}
res.send({
success: true
})
});
答案 1 :(得分:0)
您是否关闭了特定的收集窗口并再次打开它,还是尝试在Robot 3T中重新连接数据库?