Я пытаюсь удалить все документы из массива документов, которые соответствуют этому значению, но не могу понять,
Это мой запрос на удаление, который не работает, курсы — это массив, в котором мне нужно находиться, а код — это документ, который мне нужно проверить, чтобы увидеть его значение для удаления. Итак, если курсы.код == 123, то удалите и продолжайте что-то вроде этого.
result = await mongoClient.db(DB_NAME).collection("technologies").deleteMany({ 'courses': {$in: 'courses.code'} });
Вот так он выглядит в моей коллекции.
"name": "Sass",
"description": "Sass (Syntactically awesome style sheets) is a preprocessor scripting language that is interpreted or compiled into Cascading Style Sheets (CSS).",
"difficulty":2,
"courses":[
{"code":"PROG2700","name":"Client Side Programming"},
{"code":"PROG3017","name":"Full Stack Programming"}
]
},
Любая помощь будет здорово, спасибо!
Вы можете фильтровать документы, содержащие поле, которое вы хотите обновить.
Делайте тесты перед обновлениями оригинальной коллекции.
После некоторых поисков я нашел этот метод:
const filter = { }
db.collection.update(filter,
{
$pull: {
"courses": {
code: {
$in: [
"PROG3017",
"PROG2700"
]
}
}
}
},
{
multi: true
})
Это извлекает любой элемент в массиве, где значением кода является $in
массив.
Да, я хочу удалить весь документ, поэтому имя и код, которые равны, например, внутри курсов, если код == PROG2700, удалите его и сделайте это для всех других кодов, которые соответствуют этому значению.