#mongodb #mongodb-query #spring-data-mongodb
#mongodb #mongodb-запрос #spring-data-mongodb
Вопрос:
У меня есть коллекция, в которой хранятся данные дерева в виде документов mongo db с родительскими ссылками, как описано в https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-parent-references /
Мой вопрос в том, как мне удалить узел (документ) и все документы под этим узлом (дочерний элемент дочернего элемента и т. Д.) С помощью запроса mongodb. Я не хочу анализировать и извлекать все идентификаторы и удалять их. Есть ли какой-либо запрос mongo mongo, который мог бы помочь мне удалить все поддерево, взяв родительскую ссылку в качестве начального параметра.
Заранее спасибо!
Приветствия
Комментарии:
1. если ответ был полезным, пожалуйста, хотя бы дайте отзыв.
2. Я был в отпуске, поэтому не смог его протестировать. Это помогает. Большое спасибо!
Ответ №1:
Немного сложно представить, о чем вы думаете, но вы можете запустить self $graphLookup и получить список документов на основе этой иерархии.
Вы можете проверить пример, который я написал здесь
Конвейер
db.collection.aggregate({
$match: {
_id: "Books"
}
},
{
"$graphLookup": {
"from": "collection",
"startWith": "$_id",
"connectFromField": "_id",
"connectToField": "parent",
"as": "ids"
}
},
{
$project: {
"ids": {
$map: {
input: "$ids",
as: "id",
in: "$id._id"
}
},
"_id": 0
}
})
Тогда вам просто нужно что-то вроде этого:
db.coll.deleteMany({"_id":{$in:[listHere]}})
В этот список вам нужно добавить родительский узел.