$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学说的查询和构建器单元测试。