Как удалить ObjectId из массива ref в схеме Монго? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть такая схема:

  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

что яхочу сделать, это удалить данные по их идентификатору.я делаю это:

Test.update({}, {$pull: {data: idD }}, function(err, test) {
    if (err) {
        res.send(err);
    }
    res.send({
        success: true
    })
});

где idD - это идентификатор данных, который я хочу удалить.Перед этим я делаю простой

Data.deleteOne({_id: idD}, function...

, и он работает правильно, но если я обновляю БД, мои данные с idD все еще присутствуют в массиве данных в тестовой схеме.я также пробовал:

Test.update({}, {$pull: {data: {_id:idD }},
Test.update({}, {$pull: {data: {_id: mongoose.Types.ObjectId(idD)}}},

но ничего не работает.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

При обновлении нескольких документов вы должны использовать multi: true.

 Test.update({}, {$pull: {data: idD },{multi: true}, function(err, test) {
        if (err) {
            res.send(err);
        }
        res.send({
            success: true
        })
    });
0 голосов
/ 01 февраля 2019

Вы закрыли определенное окно коллекции и открыли его снова, или вы пытались повторно подключить свою БД в роботе 3T?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...