0

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

[
{
    "_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': []}})

根据原型,这似乎很简单——查询使用 find 工作,但在 $update 期间,什么也没有发生,甚至没有错误消息。

有什么线索吗?

4

1 回答 1

1

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

db.users.update({'services.twitter': []}, {$pull: {services: { twitter: []}}})
于 2013-11-04T16:57:35.130 回答