4
オブジェクトの配列内の配列から項目を削除するMongoDB:は、私はこのようになります文書を持って
{
"_id" : ObjectId("56fea43a571332cc97e06d9c"),
"sections" : [
{
"_id" : ObjectId("56fea43a571332cc97e06d9e"),
"registered" : [
"123",
"e3d65a4e-2552-4995-ac5a-3c5180258d87"
]
}
]
}
私はのみ特定のセクションのregistered
配列に'e3d65a4e-2552-4995-ac5a-3c5180258d87'
を削除したいです_id
は'56fea43a571332cc97e06d9e'
である。
私の現在の試みはこのようなものですが、元の文書をそのまま返します。
db.test.findOneAndUpdate(
{
$and: [
{'sections._id': ObjectId('56fea43a571332cc97e06d9e')},
{'sections.registered': 'e3d65a4e-2552-4995-ac5a-3c5180258d87'}
]
},
{
$pull: {
$and: [
{'sections._id': ObjectId('56fea43a571332cc97e06d9e')},
{'sections.registered': 'e3d65a4e-2552-4995-ac5a-3c5180258d87'}
]
}
})
私は$pull
にして見てきたが、私はそれが別の配列を含むネストされたオブジェクトの配列に動作させる方法を見つけ出すように見えることはできません。 $pull
の例はすべて、1つのレベルの入れ子しか扱っていないようです。一致するエントリを、 sections
アレイの項目の配列から、私が提供する_id
で削除するにはどうすればよいですか?
これは、セクションのいずれかで、 ' "e3d65a4e-2552から4995-ac5a-3c5180258d87"'の任意のインスタンスを削除しませんか?私は特定のセクションの登録された配列からその文字列を削除するだけです。 – jergason
テスト後、これはうまくいくように見えましたが、理由はわかりません。どのようにして、 '_id'と一致する特定のセクションにのみ$ pull演算子を適用することがわかりますか? – jergason
私は実際に人間のような '$'のドキュメントを読んでいます。意味あり。ご協力いただきありがとうございます。 – jergason