在mongoDB中,我可以有效地将文档分组到集合大小的组中



我需要将数据分组到集合大小的子组中。例如,如果有6条记录,按日期排序。

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

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

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

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

聚合框架有什么可以帮助这一点吗?

目前最好的方法是使用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进程可以,特别是在这种情况下。

相关内容

  • 没有找到相关文章

最新更新