Обрезать документ mongo с помощью фильтра
Стек проекта - Django + MongoDB (библиотека djongo).
У меня есть таблица заказов со структурой данных следующим образом
{
name:"Help",
price:123,
products:[
{
"_id":"some id",
"organization":{
"id":1
}
},
{
"_id":"some id2",
"organization":{
"id":2
}
}
]
}
Как получить список заказов, в котором есть элемент из набора 'products', где поле organization id равно 1?
Когда я получу этот список, как я могу удалить товары, в которых поле id организации не равно 1?
Итак, я должен получить что-то вроде этого (поле Price не должно быть слишком большим)
{
name:"Help",
products:[
{
"_id":"some id",
"organization":{
"id":1
}
}
]
}
Query
$filter
продукты и оставить только те, у которыхorganization.id=1
- удалите поле цены (
$$REMOVE
является системной переменной, и если поле получает это значение, оно удаляется)
* вы можете использовать project, это то же самое, но $set
оставляет все остальные поля, которые вы можете иметь, неизменными
aggregate(
[{"$set":
{"price":"$$REMOVE",
"products":
{"$filter":
{"input":"$products",
"cond":{"$eq":["$$this.organization.id", 1]}}}}}])