どのようにキーで配列要素を削除しますか?MongoDBのキーで特定のサブ要素を削除するには
ドキュメントは名前でキーを識別するのと同じくらい簡単だと思われますが、これはうまくいかないようです。例えば
、下の画像の配列、および59db1c3654819952005897
のキーで、私は要素(以下のコードはエラーを生成しませんが、何も削除されません)を削除することができませんでしだ:
updateOne(['_id' => 34], ['$pull' => ["images" => "59db1c3654819952005897"]])
をここでは、データ構造は次のとおりです。あなたのpull
クエリがimages
の値が59db1c3654819952005897
に等しく、あなたのケースでは、それは真実ではない文書を探しているので
"_id" : 34,
"images": [
{
"59db1c3654819952005897": {
"name": "1024x1024.png",
"size": "19421",
"sort": 2
}
},
{
"59db1c3652cda581935479": {
"name": "200x200.png",
"size": "52100",
"sort": 3
}
}
]
私はそれが理にかなっていると思います...キーがあれば、「存在すれば」を加えなければならないということは奇妙です。 ありがとう! – kylex
'key'を' value'として比較しているからです!どういたしまして :) –