Symfony Mongo查询:选择最大

时间:2017-08-09 12:09:01

标签: php mongodb symfony mongodb-query query-builder

我试图理解聚合在mongo查询中的工作原理。例如,我的文档Product带有category字段。如何从每个类别中选择最新添加的产品?

class Product {
     /**
      * @MongoDB\Id
      */
     protected $id;

     /**
      * @MongoDB\Field(type="integer")
      */
     protected $category;

这是我迄今为止所尝试过的:

class ProductRepository extends DocumentRepository
{

    public function lastProducts()
    {
         $qb = $this->createQueryBuilder();
         $qb->max('id');
         $qb->group(['category'], []);

         return $qb->getQuery()->execute();
    }
}

当我运行此查询时,我得到Uncaught PHP Exception Doctrine\MongoDB\Exception\ResultException: "not code"

1 个答案:

答案 0 :(得分:2)

要检索最后一个产品,请按id desc对它们进行排序,然后将查询限制为1个元素:

public function lastProducts()
{
     $qb = $this->createQueryBuilder();

     $qb->sort('p.id', 'desc')
        ->from('UserBundle\Product', 'p')
        ->limit(1)
     ;

     return $qb->getQuery()->getSingleResult();
}