mongodb - 如何删除mongodb中的数组元素?

这里是数组结构

contact: {
    phone: [
        {
            number: "+1786543589455",
            place: "New Jersey",
            createdAt: ""
        }
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }

    ]
}

这里我只知道 mongo id(_id) 和电话号码(+1786543589455),我需要从文档中删除整个对应的数组元素。即电话数组中的零索引元素与电话号码匹配,需要删除相应的数组元素。

contact: {
    phone: [
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }
    ]
}

我尝试了以下更新方法

collection.update(
    { _id: id, 'contact.phone': '+1786543589455' },
    { $unset: { 'contact.phone.$.number': '+1786543589455'} }
);

但它会从内部数组对象中删除 number: +1786543589455,而不是 phone 数组中的零索引元素。尝试使用 pull 也没有成功。

如何去除mongodb中的数组元素?

最佳答案

尝试以下查询:

collection.update(
  { _id: id },
  { $pull: { 'contact.phone': { number: '+1786543589455' } } }
);

它将找到具有给定 _id 的文档,并从其 contact.phone 数组中删除电话 +1786543589455

您可以使用 $unset 取消设置数组中的值(将其设置为 null),但不能完全删除它。

https://stackoverflow.com/questions/16959099/

相关文章:

javascript - Mongoose 子文档与嵌套模式

mongodb - 使用 MongoDB 检查字段是否存在

node.js - 如何在 MongoDB 中按日期对集合进行排序?

node.js - 如何使用 2d 地理索引在 Mongoose 模式中正确定义数组中的对象

node.js - 如何使用 Mongoose 生成 ObjectId?

mongodb - mongorestore 错误 : Don't know what to do

node.js - Mongoose (mongodb)批量插入?

java - 运行集成测试时嵌入 MongoDB

mongodb - Mongoose -- 强制集合名称

javascript - mongoose vs mongodb(nodejs模块/扩展),哪个更好