为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB,从数组中删除对象

/ 猿问

MongoDB,从数组中删除对象

慕斯王 2019-09-05 10:05:57

MongoDB,从数组中删除对象

文档:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name,
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]}

有没有办法从数组中提取特定对象?IE如何从items数组中提取id为23的整个item对象。

我试过了:

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});

但是我很确定我没有正确使用'pull'。根据我的理解,pull将从数组中提取字段而不是对象。

任何想法如何将整个对象拉出阵列。

作为奖励,我试图在mongoose / nodejs中执行此操作,并且不确定这种类型的东西是否在mongoose API中但我找不到它。


查看完整描述

3 回答

?
哔哔one

尝试..

db.mycollection.update(
    {'_id': ObjectId("5150a1199fac0e6910000002")}, 
    { $pull: { "items" : { id: 23 } } },false,true );


查看完整回答
反对 回复 2019-09-10
?
侃侃尔雅

我有一个类似的文件

我必须从地址数组中删除地址

在网上搜索了很多我找到了解决方案

Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){
        if(err) {
          return res.status(500).json({'error' : 'error in deleting address'});
        }

        res.json(data);

      });



查看完整回答
反对 回复 2019-09-10
?
慕侠2389804
my database:->
        {
       "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }, 
           {
               "id" : 3
           }
       ]
    }MY QUERY:->db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}OutPut:->{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }
       ]
    }



查看完整回答
反对 回复 2019-09-10

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信