文档:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
有没有办法从数组中提取特定对象? I.E.如何从items数组中提取id为23的整个item对象。
我试过了:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
但我很确定我没有正确使用'pull'。根据我的理解,pull将从数组中提取字段,但不是对象。
如何将整个对象拉出阵列。
作为奖励我试图在mongoose / nodejs中执行此操作,并且不确定这种类型的东西是否在mongoose API中但是我找不到它。
答案 0 :(得分:105)
尝试..
db.mycollection.update(
{'_id': ObjectId("5150a1199fac0e6910000002")},
{ $pull: { "items" : { id: 23 } } },
false,
true
);
答案 1 :(得分:7)
我有一个像
这样的文件我必须从地址数组中删除地址
在互联网上搜索后,我找到了解决方案
Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){
if(err) {
return res.status(500).json({'error' : 'error in deleting address'});
}
res.json(data);
});
答案 2 :(得分:4)
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
}
]
}
答案 3 :(得分:3)
对于数组中的单个记录:
db.getCollection('documents').update(
{ },
{'$pull':{ 'items':{'mobile': 1234567890 }}},
{new:true}
);
对于数组中具有相同手机号码的多个记录:
db.getCollection('documents').update(
{ },
{'$pull':{ 'items':{'mobile': 1234567890 }}},
{new:true,multi:true}
)
答案 4 :(得分:1)
使用$pull
删除数据
return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
return {
result: dashboardDoc
}
});
答案 5 :(得分:0)
您也可以尝试:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
答案 6 :(得分:0)
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}]}