MongoDB更新,从数组中删除文档
我有这样的收藏:MongoDB更新,从数组中删除文档,mongodb,Mongodb,我有这样的收藏: db.users.findOne({'_id':ObjectId("541a8cac7f8b9acf408b4567")}); { "_id" : ObjectId("541a8cac7f8b9acf408b4567"), "friends" : [ { "_id" : ObjectId("541adb1f7f8b9ad0408b4567"), "time" : 1411046195
db.users.findOne({'_id':ObjectId("541a8cac7f8b9acf408b4567")});
{
"_id" : ObjectId("541a8cac7f8b9acf408b4567"),
"friends" : [
{
"_id" : ObjectId("541adb1f7f8b9ad0408b4567"),
"time" : 1411046195
},
{
"_id" : ObjectId("541adb1f7f8b9ad0408b5467"),
"time" : 1411046123
}
]
}
我用这个来删除:
db.users.update({'uuid':'wb_2204553113'}, {'$pullAll':{friends:[{_id:ObjectId('541adb1f7f8b9ad0408b4567'), time:{$gt:0}}] } } );
但是如果返回空值,它就混乱了
与$pull运算符通过指定查询删除元素不同,$pullAll删除与列出的值匹配的元素
因此,在这种情况下,您的更新应该是:
db.users.update(
{'uuid':'wb_2204553113'},
{$pullAll:
{朋友:[{u id:ObjectId('541ADB1F7F8B9AD04008B4567'),时间:1411046195}]
}
);代码>
请注意确切的时间值
当然,您可以使用$pull
来表达上述内容:
db.users.update(
{'uuid':'wb_2204553113'},
{$pull:{friends:{u id:ObjectId('541adb1f7f8b9ad0408b4567'),时间:{$gt:0}}
);代码>
在您的情况下,也可以表示为:
db.users.update(
{'uuid':'wb_2204553113'},
{$pull:{friends:{u id:ObjectId('541adb1f7f8b9ad0408b4567')}}
);代码>
`你想做什么?