los*_*ion 71 javascript arrays mongoose mongodb node.js
文档:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从数组中提取特定对象?IE如何从items数组中提取id为23的整个item对象.
我试过了:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
Run Code Online (Sandbox Code Playgroud)
但是我很确定我没有正确使用'pull'.根据我的理解,pull将从数组中提取字段而不是对象.
任何想法如何将整个对象拉出阵列.
作为奖励,我试图在mongoose/nodejs中执行此操作,并且不确定这种类型的东西是否在mongoose API中但我找不到它.
sam*_*tin 119
尝试..
db.mycollection.update(
{'_id': ObjectId("5150a1199fac0e6910000002")},
{ $pull: { "items" : { id: 23 } } },
false,
true
);
Run Code Online (Sandbox Code Playgroud)
小智 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);
});
Run Code Online (Sandbox Code Playgroud)
我的数据库:
{
"_id" : ObjectId("5806056dce046557874d3ab18"),
"data" : [
{ "id" : 1 },
{ "id" : 2 },
{ "id" : 3 }
]
}
Run Code Online (Sandbox Code Playgroud)
我的查询:
db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}
Run Code Online (Sandbox Code Playgroud)
输出:
{
"_id" : ObjectId("5806056dce046557874d3ab18"),
"data" : [
{ "id" : 1 },
{ "id" : 2 }
]
}
Run Code Online (Sandbox Code Playgroud)
你也可以试试:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
Run Code Online (Sandbox Code Playgroud)
小智 6
对于数组中的单个记录:
db.getCollection('documents').update(
{ },
{'$pull':{ 'items':{'mobile': 1234567890 }}},
{new:true}
);
Run Code Online (Sandbox Code Playgroud)
对于数组中具有相同手机号码的多条记录:
db.getCollection('documents').update(
{ },
{
$pull: {
items: { mobile: 1234567890 }
}
},
{ new:true, multi:true }
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58514 次 |
最近记录: |