MongoDB ODM - 按MAX分组(group_id)

时间:2013-02-05 05:10:46

标签: mongodb symfony doctrine-odm

让我谈谈这一点,我目前正在使用Doctrine MongoDB ODM与Symfony2一起将数据保存到MongoDB中。

目前我正在按type对结果进行分组,但我也希望按MAX(group_id)对其进行分组。

当然我可以改变reduce函数,但是我试图在查询完成后避开大型返回数组和更多处理,所以我想知道是否有比这个特定问题更优雅的解决方案

监控文件,

/**
 * @ODM\Document(collection="monitoring")
 */

class Monitoring
{


    /** @ODM\Id */
    public $id;

    /** @ODM\String */
    public $type;

    /** @ODM\String */
    public $message;

    /** @ODM\Int */
    public $groupId;

    .... getters and setter etc ....

}

MonitoringManager函数以获取所有项目,

public function getAllMonitoringItems(){

    return $this->dm->createQueryBuilder('MonitoringBundle:Monitoring')
                ->group(array(), array('groups' => array()))
                ->reduce('function (obj, prev) { 
                            var type = obj.type;
                            if(!prev.groups.hasOwnProperty(type)){
                                prev["groups"][type] = [];
                                prev["groups"][type].push(obj);
                            } else {
                                prev["groups"][type].push(obj);
                            }

                        }')
                ->field('type')->notIn(array("graph"))
                ->getQuery()
                ->execute()
                ->toArray();

}

0 个答案:

没有答案