首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DoctrineMongo near查询

DoctrineMongo near查询
EN

Stack Overflow用户
提问于 2011-08-31 02:25:49
回答 1查看 1.1K关注 0票数 0

我有symfony 2+ doctrineMongo,我正在尝试使用地理空间查询->near,但这个查询似乎不起作用。总是返回一个空数组。

我遵循了这个指南:http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/geospatial-queries.html

我的存储库中有这个查询:

代码语言:javascript
复制
$this->createQueryBuilder()
            ->field('coordinates')->near($longitude, $latitude)
            ->getQuery()
            ->execute();

有bug吗?我怎么才能修复它?

My places findAll:

代码语言:javascript
复制
db.Place.find();

{ "_id" : ObjectId("4e4b82df3eee4f7e2c000000"), "coordinates" : { "latitude" : 23.1, "longitude" : 23.23 }, "name" : "Opium Mar" }

{ "_id" : ObjectId("4e5769f43eee4fc002000000"), "name" : "Sutton club", "coordinates" : { "latitude" : 2, "longitude" : 1 } }

{ "_id" : ObjectId("4e5cf2173eee4fc202000008"), "name" : "Scorpia", "coordinates" : { "latitude" : 23, "longitude" : 22 } }

这是我的索引:

代码语言:javascript
复制
db.system.indexes.find();

{ "name" : "_id_", "ns" : "kzemos.User", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.Place", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.Party", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.Friend", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.UserParty", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.Invite", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.Photo", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.Group", "key" : { "_id" : 1 }, "v" : 0 }

{ "name" : "_id_", "ns" : "kzemos.places", "key" : { "_id" : 1 }, "v" : 0 }

{ "_id" : ObjectId("4e5deaced3c5c27e84059447"), "ns" : "kzemos.places", "key" : { "loc" : "2d" }, "name" : "loc_", "bits" : 26 }

{ "_id" : ObjectId("4e5dead9d3c5c27e84059448"), "ns" : "kzemos.places", "key" : { "coordinates" : "2d" }, "name" : "coordinates_", "bits" : 26 }`

当我在mongo shell中使用near查询时,我得到了这个错误:

代码语言:javascript
复制
db.Place.find( { coordinates : { $near : [50,50] } } ) 

error: {
        "$err" : "can't find special index: 2d for: { coordinates: { $near: [ 50.0, 50.0 ] } }",
        "code" : 13038
}

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-08-31 16:31:10

你需要在你的集合上有一个地理部分索引,就像这里解释的那样http://www.mongodb.org/display/DOCS/Geospatial+Indexing

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7247932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档