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 ループを作成する必要があります。このシナリオでは、データが返された後にデータを変更するだけのショートカットを使用できますが、それを行うのがまったく効率的でない他のシナリオがあります。group
そこで、この小さなシナリオを作成して、Doctrine ODM のクエリを使用する方法、またはマップして縮小する方法を試してみました。最善の方法がわからない。現在の合計などを取得する例がたくさんあります。
pos
では、特定のフィールドごとに最大の数値を取得するクエリを作成するにはどうすればよいでしょうlocation
か。location
同じでも値が異なる複数のドキュメントが存在する可能性があることを知っていpos
ます。その上に、上でリストした選択したレコードのすべてのフィールドを->select()