Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在MongoDB中聚合具有已知顺序的无字段数组吗?_Mongodb_Aggregation Framework - Fatal编程技术网

我可以在MongoDB中聚合具有已知顺序的无字段数组吗?

我可以在MongoDB中聚合具有已知顺序的无字段数组吗?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我可以使用聚合框架重新格式化包含“未命名”项的数组结果集吗 db.results.find(); { _id: '...', headers: ['date', 'field1', 'field2'], rows: [ // Always in the same order as specified in headers above ['2014-01-01', 'some string', 5.1], ['2014-01-02', 'some string'

我可以使用聚合框架重新格式化包含“未命名”项的数组结果集吗

db.results.find();
{
  _id: '...',
  headers: ['date', 'field1', 'field2'],
  rows: [
  // Always in the same order as specified in headers above
     ['2014-01-01', 'some string', 5.1],
     ['2014-01-02', 'some string', 4.9],
     ['2014-01-03', 'yet a string', 1.2],
     ...
  ]
}
即使在实际的
数组中没有命名,我是否可以将其转换为一个按其中一个字段分组汇总的结果

预期结果:

[
  { _id: '...', field1: 'some string',  field2: 10   },
  { _id: '...', field1: 'yet a string', field2: 1.2  }
]
映射
现在聚合管道不可能实现这一点,但可以使用mapReduce实现这一点。首先定义映射器:

var映射器=函数(){
var headers=this.headers,
新行=[];
this.rows.forEach(函数(行){
var obj={};

对于(var i=0;i可能。是的。但只是不了解您的用例。您是否希望以某种方式对记录中给定数组的每个
n
元素进行单独求和?这可能需要对您的问题进行一些解释。@NeilLunn谢谢。我试着澄清我真正想要的内容。嗨,Neil,谢谢您的帮助。我想您是对的正确的路径。如果我在Chrome控制台中运行它,它会完美地工作。但是在MongoDB中,我的结果如下:
{u id:'xyz',value:[{'[object]':value},{…},…]}
。由于某种原因,value是每行N-3:rd字段的值。@DavidAndersson。是的,mapReduce输出非常奇怪。但是你在哪里运行这个?控制台?使用meteor?和另一个后端。meteor或plain node?JSON.stringify以获得对象的更好表示。这就是“value”中的内容字段。我的目的是为了一个Meteor应用程序,但我的评论中的结果来自Robomongo控制台。我的评论的意思是,在Chrome控制台中的普通JS对象上运行会产生所需的结果,但在Mongo中不会。如果此输出正确(我觉得不正确),我将如何汇总?@DavidAndersson很抱歉,我完全错过了你问题的这一部分。有几种方法。你到底想通过什么进行汇总?我想你希望通过
\u id
日期对
字段的值进行汇总。对吗?@DavidAndersson我认为这些选项是c现在吃多了,希望这能解释一切。