したがって、次のようなドキュメントがあります。
[
{
"_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
試してみましたが、ドキュメントは変更されません。
シェルでの私のコマンドは次のとおりです。
> db.users.update({'services.twitter': []}, {$pull: {'services.twitter': []}})
プロトタイプに基づいて、それは簡単に見えます — クエリは検索を使用して動作しますが、$update の間はエラー メッセージも含めて何も起こりません。
手がかりはありますか?