Mongooseを使用して、コレクション内の配列内の文字列の出現回数をカウントしようとしています。私の「スキーマ」は次のようになります。
var ThingSchema = new Schema({
tokens: [ String ]
});
私の目的は、ドキュメントごとに複数の値を含めることができる「Thing」コレクションの上位10個の「トークン」を取得することです。例えば:
var documentOne = {
_id: ObjectId('50ff1299a6177ef9160007fa')
, tokens: [ 'foo' ]
}
var documentTwo = {
_id: ObjectId('50ff1299a6177ef9160007fb')
, tokens: [ 'foo', 'bar' ]
}
var documentThree = {
_id: ObjectId('50ff1299a6177ef9160007fc')
, tokens: [ 'foo', 'bar', 'baz' ]
}
var documentFour = {
_id: ObjectId('50ff1299a6177ef9160007fd')
, tokens: [ 'foo', 'baz' ]
}
...データの結果が表示されます:
[ foo: 4, bar: 2 baz: 2 ]
このツールにMapReduceとAggregateを使用することを検討していますが、どのオプションが最適かわかりません。