【问题标题】:How to clean an array from empty objects in mongodb?如何从 mongodb 中的空对象中清除数组?
【发布时间】:2022-01-05 07:03:13
【问题描述】:

然后在mongodb 中聚合我得到这个结果:

[
  my_arr:[
    {
      id: ObjectId('618f7ef057c2923be10d1111')
      //other stuff
    },
    {},
    {},
  ]
]

有没有办法直接在聚合中删除空对象?还是有必要在服务器端做?我是在放松和一组之后才明白的。

【问题讨论】:

    标签: javascript mongodb mongodb-query


    【解决方案1】:

    您可以使用$filter 添加新的聚合阶段($project$set$addFields),如下所示:

    {
      "$project": {
        "my_arr": {
          "$filter": {
            "input": "$my_arr",
            "as": "a",
            "cond": {
              "$ne": [
                "$$a",
                {}
              ]
            }
          }
        }
      }
    }
    

    此过滤器仅将对象放入数组中,其中对象本身不为空(即不是{}

    例如here

    还有$set example$addFields example

    此外,您可以使用$$this 来引用对象,而不是来自as 的值。示例here

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多