使用过滤器裁剪 mongo 个文档

Crop mongo document with filter

项目栈是Django + MongoDB(djongo库)。
我的订单 table 具有这样的数据结构

{
  name:"Help",
  price:123,
  products:[
    {
      "_id":"some id",
      "organization":{
        "id":1
      }
    },
    {
      "_id":"some id2",
      "organization":{
        "id":2
      }
    }
  ]
}

如何获得组织 ID 字段等于 1 的 'products' 中项目的列表顺序?

我什么时候会得到这个列表,如何删除组织 ID 字段不等于 1 的产品集项目?

所以我应该得到这样的东西(价格字段不应该太)

{
  name:"Help",
  products:[
    {
      "_id":"some id",
      "organization":{
        "id":1
      }
    }
  ]
}

查询

  • $filter 个产品,只保留 organization.id=1
  • 个产品
  • 删除价格字段($$REMOVE 是系统变量,如果某个字段获得此值,则将其删除)

*您可以使用项目,它也是一样的,但是 $set 保留您可能没有改变的所有其他字段

Test code here

aggregate(
[{"$set":
  {"price":"$$REMOVE",
   "products":
   {"$filter":
    {"input":"$products",
     "cond":{"$eq":["$$this.organization.id", 1]}}}}}])