1

次の例に従ってください: http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html

私は持っている:

$dm = $this->get('doctrine.odm.mongodb.document_manager');
$query = $dm->createQueryBuilder('MainClassifiedBundle:Listing')->field('residentialOrCommercial')->equals($residentialOrCommercial);
        if ($propertyType != 'All Property Types')
            {
            $query->field('propertyType')->equals($propertyType);
            }

        $query->field('askingPrice')->range($minPrice, $maxPrice)->field('coordinates')->geoNear((float)$longitude, (float)$latitude)->spherical(true);

                if($radius!=0)
                {
                      $query->maxDistance($radius);
                }
        $classifieds = $query->limit(5)->skip(2)->getQuery()->execute();

すべてが正常に機能しますが、スキップ フィールドはまったく違いがありません。1 を入れても 1000 を入れても、同じ結果セットが得られます。

私は何が欠けていますか?

更新: 別のドキュメント コレクションでもこれをテストしたところ、機能することがわかりました。geoNear についての何かが、私にとってスキップを台無しにしているものです。

4

1 に答える 1

2

geoNear は、クエリ演算子ではなく、データベース コマンドです。そのため、 limit() および skip() 修飾子は適用されません。詳細については、 SERVER-3925を参照してください。

この機能を MongoDB で見たい場合は、Jira チケットをフォローして投票してください。

于 2013-01-08T00:14:47.667 に答える