[英]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
);
我的數據庫:
{
"_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.