sql >> データベース >  >> NoSQL >> MongoDB

MapReduceを使用して重複レコードを削除する

    私はmongoDBを使用していませんが、mapreduceを使用しています。 mapreduce関数に関しては正しい方向に進んでいると思います。 0と空の文字列を除外するには、マップ関数自体にチェックを追加します。

    のようなもの
    m = function () { 
      if(this.MlsId!=0 && this.MlsId!="") {    
        emit(this.MlsId, 1); 
      }
    } 
    

    そして、reduceはキーと値のペアを返す必要があります。したがって、次のようになります。

    r = function(k, vals) {
      emit(k,Arrays.sum(vals);
    }
    

    この後、キーがMlsIdであり、値がこの特定のIDが発生する時間の数であるように、出力にキーと値のペアのセットが必要です。 db.drop()の部分についてはよくわかりません。ご指摘のとおり、重複するMlsIdだけを削除するのではなく、おそらくすべてのMlsIdを削除します。これを回避するには、最初にdrop()を呼び出してから、MlsIdを1回再作成します。それはあなたのために働きますか?



    1. ドキュメントの配列内のオブジェクトをどのように更新しますか(ネストされた更新)

    2. Springデータ(動的フィールド)を使用したNull Pointer ExceptionMongoAggregationの取得

    3. Redisリストまたはsetpopメソッドスレッドは安全ですか?

    4. Redis RDBとAOFを無効にする方法は?