我有一个文档集合,我想通过某个名为 的字段进行查询,按字段location
对它们进行排序,并且只返回每个字段pos
的最大值。pos
所以现在的查询看起来像这样:
$locations = array(1,2,3,4,5,6);
$results = $this->dm->createQueryBuilder('\App\Document\Test')
->select('id', 'word', 'pos','change', 'title', 'coll_at', 'location')
->field('location')->in($locations)
->sort('location', 'asc')
->sort('pos', 'asc')
->getQuery()->execute();
location
但是因为对于每个具有不同的特定条目可以有多个条目pos
,所以我必须创建一个 foreach 循环以在之后操作数据。在这种情况下,我可以采用这种捷径,只是在数据返回后更改数据,但在其他情况下,这样做根本没有效率。所以我创建了这个较小的场景来尝试找出如何使用 Doctrine ODM 的group
查询,甚至映射和减少它。不确定最好的方法。我看到很多获得运行总数的例子,等等。
pos
那么我将如何创建一个查询来获取每个特定字段中的最高数值location
?知道可以有多个文档具有相同location
但不同的pos
值。最重要的是,拥有我在上面列出的所选记录的所有字段->select()