首页 > 解决方案 > 如何从 Array 中删除嵌套的数组元素

问题描述

如果嵌套数组元素的第一个值为0,我想从数组中删除它。数据如下所示。

[
  {
    "data": [[0,1],[2,3],[0,3],[4,5]]
  }
]

测试用例

这是我的解决方案,它不起作用。

db.collection.update({},
{
  "$pull": {
    "data": {
      "$elemMatch": {
        "0": 0
      }
    }
  }
})

标签: mongodb

解决方案


如果您使用的是 Mongo 4.2+ 版,则可以使用管道更新,如下所示:

db.collection.update({},
[
  {
    $set: {
      data: {
        $filter: {
          input: "$data",
          as: "datum",
          cond: {
            $ne: [
              {
                $arrayElemAt: [
                  "$$datum",
                  0
                ]
              },
              0
            ]
          }
        }
      }
    }
  }
])

蒙戈游乐场


推荐阅读