簡體   English   中英

MongoDB,從數組中刪除對象

[英]MongoDB, remove object from array

文件:

{
   _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 將從數組中拉出一個字段,而不是一個對象。

任何想法如何將整個對象從數組中拉出。

作為獎勵,我正在嘗試在 mongoose/nodejs 中執行此操作,並且不確定這種類型的東西是否在 mongoose API 中,但我找不到它。

嘗試..

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}

輸出:

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

你也可以試試:

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})

對於數組中的單個記錄:

db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true}
);

對於數組中具有相同手機號碼的多條記錄:

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

使用$pull刪除數據

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

Kishore Diyyana:

如果要刪除所有元素,包括元素屬性列表的鍵。

這是 mongoDB 未設置運算符的示例:

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

JSON 看起來像這樣:

{ "Id":123,"dataElements" : [ { "createdBy" : "Kishore Babu Diyyana", "createdByUserId" : 2020 }, { "createdBy" : "Diyyana Kishore", "createdByUserId" : 2021 } ] }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM