我需要将数据分组到一组大小的子组中。就像有6条记录一样,按日期排序。
[1,2,3,4,5,6]
我的子组大小为2.我最终会得到一个数组(长度为3)的数组(每个长度为2):
[[1,2],[3,4],[5,6]]
没有任何关于记录因素的分组,只是它们如何按所有和子组大小排序。
聚合框架是否有一些对此有帮助的东西?
答案 0 :(得分:0)
目前执行此操作的最佳方法是使用mapReduce:
db.collection.mapReduce(
function() {
var result = [];
var x = 0;
for ( x=0; x < Math.floor( this.array.length / 2 ); x+2 ) {
result.push( this.array.slice( x, x+2 ) );
}
var diff = Math.ceil( this.array.length )
- Math.floor( this.array.length );
if ( diff != 1 )
result.push( this.array.slice( x, x+diff ) );
emit( this._id, result );
},
function(){},
{
"out": { "inline": 1 }
}
);
或者基本上就是这些。
聚合框架不能很好地执行slice
类型操作,但JavaScript进程会这样做,尤其是在这种情况下。