これに似たようなことをしようとしていましたが、代わりに埋め込みドキュメントから列を削除しました。解決策を見つけるのにしばらく時間がかかりましたが、これは私が出会った最初の投稿だったので、同じことをしようとしている他の人のためにここに投稿すると思いました.
代わりに、データが次のようになっているとしましょう。
{
name: 'book',
tags: [
{
words: ['abc','123'],
lat: 33,
long: 22
}, {
words: ['def','456'],
lat: 44,
long: 33
}
]
}
words
埋め込みドキュメントから列を削除するには、次の操作を行います。
db.example.update(
{'tags': {'$exists': true}},
{ $unset: {'tags.$[].words': 1}},
{multi: true}
)
またはを使用してupdateMany
db.example.updateMany(
{'tags': {'$exists': true}},
{ $unset: {'tags.$[].words': 1}}
)
は$unset
値が存在する場合にのみ編集しますが、安全なナビゲーションは行わないため (tags
最初に存在するかどうかを確認しません)、埋め込まれたドキュメントには存在が必要です。
これは、バージョン 3.6 で導入されたすべての位置演算子( ) を使用します。$[]