所以,我有一个看起来像这样的文件:
[
{
"_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期间,没有任何反应,甚至没有错误信息。
任何线索?
答案 0 :(得分:1)
$pull
中指定的字段需要是您要修改的数组,因此在这种情况下services
:
db.users.update({'services.twitter': []}, {$pull: {services: { twitter: []}}})