Обрезать документ 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]}}}}}])
Вернуться на верх