【问题标题】:mongodb aggregate nested arrays filter not emptymongodb聚合嵌套数组过滤器不为空
【发布时间】:2022-01-05 07:08:20
【问题描述】:

但现在我不知道如何过滤
我正在聚合过滤后的数据:

[
       {
            "_id": "61cea071cfa3c96b9a4d2657",
            "name": "Utils",
            "children": [
                {
                    "name": "Code",
                    "_id": "61cebb4e6c4a5c643494d1a1",
                    "children": [{name:"jahn"}]
                },
                {
                    "name": "Image",
                    "_id": "61ceb8ad6c4a5c643494d11e",
                    "children": []
                }
            ]
        },
        {
            "_id": "61cea071cfa3c96b9a4d2111",
            "name": "Names",
            "children": [
               {
                    "name": "que",
                    "_id": "61cebb4e6c4a5c643494d1a1",
                    "children": [
                       
                     ]
                },
                {
                    "name": "filter",
                    "_id": "61cebb4e6c4a5c643494d1a1",
                    "children": [
                        {name:"jahn"}
                     ]
                }
            ]
        },
]

期待您的帮助 子项为空且不显示时如何过滤掉子项
期望的结果:

[
        {
            "_id": "61cea071cfa3c96b9a4d2657",
            "name": "Utils",
            "children": [
                {
                    "name": "Code",
                    "_id": "61cebb4e6c4a5c643494d1a1",
                    "children": [
                        {name:"jahn"}
                     ]
                }
            ]
        },
        {
            "children": [
                {
                    "children": [
                        {name:"jahn"}
                     ]
                }
            ]
        },
]

我想要孩子中的孩子,如果它是空的,它不会显示整个对象

【问题讨论】:

  • 您好,对于您的场景,您尝试在第二级子级为空数组时过滤?
  • 我重新编辑了问题以使其更清晰

标签: mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

如果您尝试过滤第二级children 数组,您可以使用$filter

db.collection.aggregate([
  {
    $project: {
      _id: 1,
      name: 1,
      children: {
        "$filter": {
          "input": "$children",
          "cond": {
            "$ne": [
              "$$this.children",
              []
            ]
          }
        }
      }
    }
  }
])

Sample Mongo Playground

注意:

"$ne": [
  "$$this.children",
  []
]

可以替换为:

"$ne": [
  {
    $size: "$$this.children"
  },
  0
]

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 2020-08-19
    • 2017-07-26
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多