Mongo学说查询构建器选择不起作用.漏洞


$dm = $this->get('doctrine.odm.mongodb.document_manager');
$query = $dm->createQueryBuilder('MyBundle:Listing')
            ->select('title')
            ->field('coordinates')->geoNear(
                  (float)$longitude, 
                  (float)$latitude
            )->spherical(true);
$classifieds_array = $classifieds->toArray();
$data = array('success'=>true,'classifieds' => $classifieds_array, 
      'displaymessage' => $classifieds->count(). " Search Results Found");

即使我只选择一个字段,但对于结果集,我还是将所有内容与标题一起收集。这是一个错误吗?

Note :我评论了->field('coordinates')->geoNear((float)$longitude, (float)$latitude)->spherical(true)行,现在选择似乎可以正常工作。这太疯狂了。

根据文档示例,

mongoDB中的geonear命令似乎不支持过滤结果字段。仅支持query选项以限制匹配的文档。

在您的情况下,看起来就像将geoNear()near()建筑商方法混合在一起。由于您在coordinates字段上进行操作,因此适当的语法为near()geoNear()是告诉您希望使用该命令的构建器的顶级方法,因为它使用集合上的一个和唯一的地理空间索引,因此不需要字段名称。

有关用法示例,我建议查看MongoDB学说的查询和构建器单元测试。

最新更新