mongodb - 如何从数组中删除嵌套数组元素

标签 mongodb

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

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

test case

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

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

最佳答案

如果您使用的是 Mongo 4.2+ 版本,您可以使用 pipelined updates像这样:

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

Mongo Playground

关于mongodb - 如何从数组中删除嵌套数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65844473/

相关文章:

node.js - 如何解决 `TypeError: person.save is not a function` - 出了什么问题?

当构造函数的参数不可用时 PHP 依赖注入(inject)

mongodb - Meteor 客户端排序 Collection

javascript - 在mongodb中同时并按位置递减多个值

javascript - 将 Mongoose 文档中的字段设置为数组长度

django - 如何在Django RESTful APIs中提高200万条数据的查询速度

Mongodb 聚合 $unwind 然后计数

javascript - Sails JS - 添加文档并在响应中返回整个集合

node.js - 将项目添加到混合模式数组时,mongoose.save 的结果不正确

ruby-on-rails - 如何在查询中使用数组字段匹配 mongoid 文档?