我试图理解聚合在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"
答案 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();
}