Javascript MongoDB,从数组中删除对象

Javascript MongoDB,从数组中删除对象,javascript,arrays,node.js,mongodb,mongoose,Javascript,Arrays,Node.js,Mongodb,Mongoose,文件: 有没有办法从数组中提取特定对象?即,如何从items数组中提取id为23的整个item对象 我试过: { _id: 5150a1199fac0e6910000002, name: 'some name, items: [{ id: 23, name: 'item name 23' },{ id: 24, name: 'item name 24' }] } 然而,我很确定我没有正确使用“pull”。据我所知,p

文件:

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

我试过:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name,
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}
然而,我很确定我没有正确使用“pull”。据我所知,pull会从数组中提取场,但不会从对象中提取场

了解如何将整个对象从阵列中拉出

作为奖励,我尝试在mongoose/nodejs中这样做,也不确定mongoose API中是否有这种类型的东西,但我找不到它。

试试

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
我有一份像这样的文件

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

在网上搜索了很多之后,我找到了解决办法

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true, // Multi
);
我的数据库:

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

    res.json(data);
});
我的问题是:

{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
  "data" : [ 
    { "id" : 1 }, 
    { "id" : 2 }, 
    { "id" : 3 }
  ]
}
    
输出:

db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}

使用
$pull
删除数据

{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
  "data" : [ 
    { "id" : 1 }, 
    { "id" : 2 }
  ]
}
您也可以尝试:

return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
     return {
        result: dashboardDoc
     }
});

对于数组中的单个记录:

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true}
);
对于阵列中具有相同移动号码的多条记录:

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true}
);
基肖尔·迪亚纳:

如果要删除所有元素,包括元素属性列表的键

以下是mongoDB unset运算符的示例:

db.getCollection('documents').update(
    { },
    {
        $pull: {
            items: { mobile: 1234567890 }
        }
    },
    { new:true, multi:true }
)
JSON如下所示:

db.UM_PREAUTH_CASE.update(
{ 'Id' : 123}, { $unset: { dataElements: ""} } )

你试过这个吗?是的,就是这样。谢谢是的,我的语法错了。谢谢也尝试过不使用打乱和多选项,效果也不错。那些布尔值是什么?@NicolasDelValle如果我没记错的话,这些是选项
upsert
multi
。有关当前语法和文档,请查看以下链接:如何在MongoDB CLI中执行此操作?我认为这是nodejs(express)解决方案,而不是MongoDB查询解决方案