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')}}
);


`

你想做什么?