1

mongoDB で mapreduce を試した後、フラットなドキュメントではなく「2 次元」の結果が得られるのではないかと心配しています。

つまり、ドキュメントは {id:..., value:{test:123}} のようになります

代わりに、次の形式をお勧めします: {...,test:123}

結果/出力コレクションにこのスタイルを選択するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

MongoDB の map/reduce ジョブからの出力コレクションには、常に次のトップレベル構造があります。

{_id: <something>, value: <something> }

つまり、常に 2 つのキーを持つドキュメントになります。「値」を単一の値にしたい場合は、emit() および reduce() 関数を制御することで実現できます。

以下は、'value' に対して単一の値を出力する emit() 関数です。

emit() { this.date, 1 }

以下は、'value' に対して単一の値を返す reduce() 関数です。

reduce() {
  var count = 0;

  values.forEach(function(v) {
    count += v;
  });

  return count;
};

覚えておいてください: emit() によって発行されたドキュメントの「形状」は、reduce() によって返されたものと同じでなければなりません。

これを行うと、出力コレクション内のドキュメントは次のようになります。

{ _id: ISODate("2012-11-27T00:27:41.103Z"), value: 99 }
于 2012-11-27T00:28:17.747 に答える