コレクションからフィールドを削除する方法を知っています:
db.example.update({},{$unset: {field_to_del:1}},false,true)
しかし、ドキュメントを更新するときに、長さがゼロのすべてのドキュメント フィールドを削除したいと考えています。
コレクションからフィールドを削除する方法を知っています:
db.example.update({},{$unset: {field_to_del:1}},false,true)
しかし、ドキュメントを更新するときに、長さがゼロのすべてのドキュメント フィールドを削除したいと考えています。
私はあなたが2つの方法のうちの1つに近づくことができると思います:
1)どのフィールドが削除されたかをアプリで確認し、質問の場合と同じように更新時に削除します。
2)バッチジョブとしてスクリプト化します。これはおそらくあなたが必要とすることをします:それはコレクション(この場合はコレクション'so')内の任意のドキュメントの空のフィールド(つまり、空の文字列値)を強制的に削除します
var updateEmptyField = function(o){
for (var f in o){
if (o[f] === ''){
eval ("db.so.update({},{$unset: {" + f + ":1}},false,true);");
}
}
}
db.so.find().forEach(updateEmptyField);
フィールド名を保持する変数を使用するには、ここでevalを使用する必要があります。