mongoDBの配列から特定の要素を削除する方法が不思議です。 は私がコレクションgeojsons
に保存されている次のようなJSONがありますmongoDBアレイからの削除
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"ID": "1753242",
"TYPE": "8003"
}
},
{
"type": "Feature",
"properties": {
"ID": "4823034",
"TYPE": "7005"
}
},
{
"type": "Feature",
"properties": {
"ID": "4823034",
"TYPE": "8003"
}
}
]
}
をそして私はproperties.TYPE
が8003
に等しい配列features
、内のすべての要素を削除したいです。 次の文で試しましたが、何も削除されません。
db.geojsons.aggregate([
{$match: {'features': {$elemMatch : {"properties.TYPE": '8003' }}}},
{$project: {
features: {$filter: {
input: '$features',
as: 'feature',
cond: {$eq: ['$$feature.properties.TYPE', '8003']}
}}
}}
])
.forEach(function(doc) {
doc.features.forEach(function(feature) {
db.collection.deleteOne(
{ "feature.properties.TYPE": "8003" }
);
print("in ")
});
});
これは何も削除されないのはなぜですか?一致する要素を削除する方法はありますか? printステートメントが期待どおりに実行されるため、私にとってはエラーがforEach
の内部にあるようです。