0

Map/Reduce の結果を永続的に保存できるが、並べ替えはできないというのは本当ですか? 例えば、

coll = Analytic.collection.map_reduce(map, reduce, 
                                        :out => 'analyticsCachedResult')

上記は永続的に保存されますが、ソートされません。

その場で並べ替えるには、

coll.find({}, :sort => ['value.pageviews', :desc]) 

しかし、テーブルを内部的にソートできますか? ソートキーにインデックスを作成すれば、内部でソートするのとほぼ同じくらいうまくいくのではないでしょうか?

または、どのように並べ替えて、新しいコレクションとして保存できますanalyticsSortedCachedResultか?

後で、Mongoid を使用してコレクションを取得するには、

coll = Mongoid.master.collection('analyticsCachedResult')

? Mongoid.master.collection('foo')しかし、コレクションが存在しなくてもコレクションが返されるのではないかと心配しています。しかし、MongoDB にも保存されていないようです。

4

1 に答える 1

1

MongoDB の MapReduce は通常のコレクションに出力するため、ソートや、出力に対する別の MapReduce パスの実行など、使い慣れたすべての機能を使用できます。ただし、ソート キーにインデックスを付けずに大きなコレクションをソートすると、問題が発生する場合があります。

于 2010-09-23T21:42:54.437 に答える