首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除mongodb中的数组元素?

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

Stack Overflow用户
提问于 2013-06-06 17:58:19
回答 6查看 161.1K关注 0票数 170

下面是数组结构

代码语言:javascript
复制
contact: {
    phone: [
        {
            number: "+1786543589455",
            place: "New Jersey",
            createdAt: ""
        }
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }

    ]
}

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

代码语言:javascript
复制
contact: {
    phone: [
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }
    ]
}

我尝试了下面的update方法

代码语言:javascript
复制
collection.update(
    { _id: id, 'contact.phone': '+1786543589455' },
    { $unset: { 'contact.phone.$.number': '+1786543589455'} }
);

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

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-06-06 18:25:10

尝试执行以下查询:

代码语言:javascript
复制
collection.update(
  { _id: id },
  { $pull: { 'contact.phone': { number: '+1786543589455' } } }
);

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

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

票数 291
EN

Stack Overflow用户

发布于 2017-03-23 18:18:12

下面的代码将从数组中删除完整的对象元素,其中电话号码为'+1786543589455‘

代码语言:javascript
复制
db.collection.update(
  { _id: id },
  { $pull: { 'contact': { number: '+1786543589455' } } }
);
票数 21
EN

Stack Overflow用户

发布于 2018-08-23 17:18:53

您可以简单地使用$pull来删除子文档。$pull运算符从现有数组中删除与指定条件匹配的一个或多个值的所有实例。

代码语言:javascript
复制
Collection.update({
    _id: parentDocumentId
  }, {
    $pull: {
      subDocument: {
        _id: SubDocumentId
      }
    }
  });

这将根据给定的ID查找父文档,然后从subDocument中删除与给定条件匹配的元素。

阅读有关pull here的更多信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16959099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档