【问题标题】:Symfony Mongo query: select maxSymfony Mongo 查询:选择最大值
【发布时间】:2017-08-09 12:09:01
【问题描述】:

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

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"

【问题讨论】:

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


    【解决方案1】:

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

    public function lastProducts()
    {
         $qb = $this->createQueryBuilder();
    
         $qb->sort('p.id', 'desc')
            ->from('UserBundle\Product', 'p')
            ->limit(1)
         ;
    
         return $qb->getQuery()->getSingleResult();
    }
    

    【讨论】:

    • 这个实体查询生成器!这不适用于 mongo 文档
    • 对于任何未来发现此问题的人,user4666065 完全正确,这是 ORM 而不是 ODM。正确答案可以在:https://stackoverflow.com/a/21660153/3579432
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 2013-10-26
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    相关资源
    最近更新 更多