例如,我有以下文件:

db.test.save({
  _id: 1,
  list: [
    { key: "a" },
    { key: "b" },
    { key: "c" },
    { key: "d" },
    { key: "e" }
  ]
})

我需要从列表中删除第二个元素.

现在我分两步来做.我首先取消设置第二个列表元素,但$unset运算符没有删除该元素,它将其修改为null,然后从列表字段中提取任何可为空的值:

db.test.update({_id: 1}, {$unset: {"list.2": 1}})
db.test.update({_id: 1}, {$pull: {list: null}})

是否有一个解决方案可以在一次操作中实现这一点?

推荐答案

不,不幸的是,你现在所做的是最好的 Select .看一看这个问题:In mongoDb, how do you remove an array element by its index,它链接到这个问题的Jira.

Mongodb相关问答推荐

如何使用MongoDB对子文档进行条件投影?

MongoDB DB参考返回null值

对对象数组进行分组并在 mongodb 中获取计数

将数据从一个集合插入另一个集合的聚合

MongoDB shell:如何删除列表以外的所有集合

MongoDB 使用 pymongo 收集 500K 文档的写入速度很差

根据聚合管道MongoDB Atlas触发器中的条件更新多个字段

mongoDB 过滤、排序和排名结果

在MongoDb的数组中计算大于某个数字的数字

如何在mongoDB中按嵌套文档分组( group by )

Springboot 使用 find*() 查询时出现 Mongodb 错误

MongoDB:自动生成的 ID 为零

使用已排序的数据获取不同的值

如何使用 MongoDB Compass 对数据进行排序

Cannot connect to MongoDB errno:61

Mongo:无法在 src/mongo/shell/mongo.js:145 连接到服务器 127.0.0.1:27017

Meteor订阅不更新集合的排序顺序

判断字段是否存在于数组的子文档中

MongoDB:删除唯一约束

如何从集合中删除除 MongoDB 中的文档之外的所有文档