1

コレクションからフィールドを削除する方法を知っています:

db.example.update({},{$unset: {field_to_del:1}},false,true)

しかし、ドキュメントを更新するときに、長さがゼロのすべてのドキュメント フィールドを削除したいと考えています。

4

1 に答える 1

-2

私はあなたが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を使用する必要があります。

于 2012-05-18T14:21:48.620 に答える