Mongo通过查询查找文档,但是$ pull不能完成它的工作

时间:2013-11-04 16:42:10

标签: mongodb

所以,我有一个看起来像这样的文件:

[
{
    "_id" : ObjectId("52774aa8036473112ef715eb"),
    "humans" : [
        {
            "name" : "WTF",
            "serviceUsers" : [
                {
                    "username" : "someoneelse",
                    "serviceID" : "abcdefghijklmnop",
                    "service" : "twitter",
                    "onBehalfOf" : "WTF-test"
                }
            ]
        }
    ],
    "password" : "r4fp+7glE/qR3VJuP7Jlvt6pEx4thssi503O8CfFAK1HJEB1F1bIkDHaf+6LHDbm",
    "services" : [
        {
            "twitter" : [ ]
        }
    ],
    "username" : "darthjulian",
    "version" : NumberLong(1)
}
]

那个数组services?我想删除元素twitter,因为它是空的。

我可以使用以下方法成功查询文档:

> db.users.find({'services.twitter': []}).toArray()

所以,使用update原型:

db.collection.update( { field: <query> }, { $pull: { field: <query> } } );

我尝试$pull该元素..但文档未更改。

我在shell中的命令是:

> db.users.update({'services.twitter': []}, {$pull: {'services.twitter': []}})

看起来很简单,基于原型 - 查询使用查找工作,但在$ update期间,没有任何反应,甚至没有错误信息。

任何线索?

1 个答案:

答案 0 :(得分:1)

$pull中指定的字段需要是您要修改的数组,因此在这种情况下services

db.users.update({'services.twitter': []}, {$pull: {services: { twitter: []}}})