这里是数组 struct

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

    ]
}

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

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

我try 了以下更新方法

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

但它从内部数组对象中移除number: +1786543589455,而不是phone数组中的零索引元素.用pull也没成功.

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

推荐答案

请try 以下查询:

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

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

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

Mongodb相关问答推荐

MongoDB Aggregate-如何在条件中替换字符串中的变量

将消息流式传输到WebSocket

除非满足某个条件,否则Mongo是否按日期排序?

为什么这个查询可以在MongoDB中使用?

mongoose正在抛出Schema的错误has';t已在next.js中注册

定期自动轮换 MongoDb 集合

Mongodb聚合查找连接两个对象字段的集合数组匹配对象索引字段的总和

使用MongoDB作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

MongoDB C# 驱动程序 2.0 InsertManyAsync 与 BulkWriteAsync

.NET 中的 Mongodb 单元测试

如何在mongoose中加入两个集合

如何从 node.js 以编程方式执行 mongodump 命令?

MongoDB - 聚合 - 获取数组中的唯一项

MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

文本的 MongoID 数据类型

移动 MongoDB 的数据文件夹?

如何匹配 MongoDB 聚合框架中的 undefined值?

如何从mongoose中的对象 ID 获取创建日期?

Mongodb同时在多个字段上聚合(计数)

为什么 Mongo 提示会使查询运行速度提高 10 倍?