我正在尝试使用Mongoose来计算我的集合中数组中一个字符串出现的次数。我的“schema”看起来像这样:
var ThingSchema = new Schema({
tokens: [ String ]
});
我的目标是获取“Thing”集合中前10个“tokens”,其中每个文档可以包含多个值。例如:
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,但我不确定哪个是最好的选择。
aggregate
。您需要查看$unwind
操作符来实现这一点。 - JohnnyHKmapReduce
类已经将临时操作符添加到查询中,允许返回结果集而不是持久化。除此之外,我是否有使用aggregate
的原因? - Eric Martindale