Извлечь документ по идентификатору из тройного вложенного массива MongoDB - PullRequest
1 голос
/ 04 августа 2020

Я бы хотел получить документ по идентификатору из тройного вложенного массива документов. DB выглядит примерно так:

[{
    type: "Foods",
    fruit: [{
      name: "Apple",
      kinds: [{
        name: "Red Delicious"
        details: [{
           _id: ObjectId("123123123"),
           colors: ["red", "yellow"]
           }]
        }]
    }]
}]

Я хотел бы иметь возможность вытащить документ с _id: 123123123. Я пробовал много разных способов, но всегда говорит, что он совпадает, но победил ' t изменить документ.

Я пробовал:

db.stuff.update({}, {$pull: {fruits: {kinds: {details: {_id: "123123123"}}}}}), 
db.stuff.update({}, {$pull: {"fruits.kinds.details' : {_id: "123123123"}}}),
db.stuff.update({}, {$pull: {"fruits.$[].kinds.$[].details' : {_id: "123123123"}}})  

Но каждый раз он совпадает, но не удаляет документ. Пожалуйста, помогите.

1 Ответ

1 голос
/ 04 августа 2020

Последняя попытка верна, однако вам нужно исправить две вещи: fruit вместо fruit (согласно вашим образцам данных) и типы должны совпадать, поэтому вам нужно преобразовать строку в ObjectId

db.stuff.update({}, {$pull: {"fruit.$[].kinds.$[].details' : {_id: mongoose.Types.ObjectId("123123123")}}}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...