如何从mongo模式的ref数组中删除ObjectId?

时间:2019-02-01 10:14:56

标签: mongodb mongoose mongodb-query mongoose-schema

我有一个这样的架构:

  var TestSchema = new Schema({
     name: String,
     ex: String,
     data:  [{type: Schema.ObjectId, ref: 'Data'}]
  });
  var Test = mongoose.model("Test", TestSchema);

在RoboT中看起来像这样:

enter image description here

我要做的是通过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)}}},

但没有任何效果。

2 个答案:

答案 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中重新连接数据库?