在mongoDB中,我可以有效地将文档分组到一组大小的组中吗?

时间:2014-05-20 14:20:18

标签: mongodb statistics aggregation-framework

我需要将数据分组到一组大小的子组中。就像有6条记录一样,按日期排序。

[1,2,3,4,5,6]

我的子组大小为2.我最终会得到一个数组(长度为3)的数组(每个长度为2):

[[1,2],[3,4],[5,6]]

没有任何关于记录因素的分组,只是它们如何按所有和子组大小排序。

聚合框架是否有一些对此有帮助的东西?

1 个答案:

答案 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进程会这样做,尤其是在这种情况下。