我使用猫鼬与nodejs。我使用mapReduce来获取按字段分组的数据。因此,作为一个集合,它给我的只是数据库中每一行具有分组字段的键。
我需要从数据库中获取由一个字段分组的所有字段,并在另一个字段的基础上进行排序。例如:我有一个数据库,有旅行到这些地方和其他一些领域的地方和票价的详细信息。现在我需要以这样一种方式获取数据,即我可以根据票价为他们排序的地方分组数据。MapReduce帮我得到了这个,但是我不能得到其他字段。
是否有一种方法可以使用map reduce获得所有字段,而不仅仅是获得上面示例中提到的两个字段??
我必须承认我不确定我完全明白你在问什么。但也许下面的想法对你有所帮助:
或者)当你迭代mapReduce结果时,你可以从mongodb获取每个结果的完整文档。这将使您能够访问每个文档中的所有字段,而代价是一些网络流量。
或)发送给emit(key, value)的值可以是一个对象。因此,您可以构造一个包含所有所需字段的值对象。只要确保你的reduce方法的返回值使用完全相同的对象结构。
我试着用一个(未经测试的)例子来说明。
map = function() {
emit(this.place,
{
'field1': this.field1,
'field2': this.field2,
'count' : 1
});
}
reduce = function(key, values) {
var result = {
'field1': values[0].field1,
'field2': values[0].field2,
'count' : 0 };
for (v in values) {
result.count += values[v].count;
}
return obj;
}