gpt4 book ai didi

mongodb - Doctrine ODM 地理空间查询的正确查询是什么?

转载 作者:可可西里 更新时间:2023-11-01 10:06:55 25 4
gpt4 key购买 nike

我已经按照
中的描述设置了一个类 http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/geospatial-queries.html

我的 2d 索引在 mongo 中设置正确

> db.system.indexes.find()                                          
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "pfcd_dev.media", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "pfcd_dev.events", "name" : "_id_" }
{ "v" : 1, "key" : { "coordinates" : "2d" }, "ns" : "pfcd_dev.events", "name" : "coordinates_" }

当我在 mongo shell 上运行以下命令时,我得到了很多返回结果。

db.runCommand( { geoNear : "events" , near : [50,60], num : 10 } )

我已经为 near() 尝试了以下所有变体,所有结果都返回零

$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near('[50,60]')->getQuery()->execute();
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near('50,60')->getQuery()->execute();
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near(50,60)->getQuery()->execute();
$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near(array(50,60))->getQuery()->execute();

Doctrine 站点上的文档似乎有点偏离。仅作记录,我创建了一个显示我的类(class)的要点(已删减)。 https://gist.github.com/1627491

这是debug()的输出

$this->dm->createQueryBuilder('\Application\Event')->field('coordinates')->near('50,60')->debug();

Array
(
[type] => 10
[mapReduce] => Array
(
[map] =>
[reduce] =>
[options] => Array
(
)

)

[near] => Array
(
[coordinates] => 50,60
)

)

最佳答案

您是否尝试过为您的模型摆脱 extends Base

您也可以尝试类似的方法:

$places = $this->dm->createQueryBuilder('\Application\Event')->field('coordinates.latitude')->near(50)->field('coordinates.longitude')->near(60)->getQuery()->execute();

关于mongodb - Doctrine ODM 地理空间查询的正确查询是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8902349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com