DoctrineMongo рядом с запросом - PullRequest
       4

DoctrineMongo рядом с запросом

0 голосов
/ 30 августа 2011

У меня есть Symfony 2 + doctrineMongo, и я пытаюсь использовать геопространственный запрос -> рядом, но кажется, что этот запрос не работает. Всегда возвращать пустой массив.

Я следовал этому руководству: http://www.doctrine -project.org / docs / mongodb_odm / 1.0 / en / reference / geospatial-query.html

И у меня есть этот запрос в моем хранилище:

$this->createQueryBuilder()
            ->field('coordinates')->near($longitude, $latitude)
            ->getQuery()
            ->execute();

Есть ошибка? Как я могу это исправить?

Мои места находятВсе:

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 } }

А это мой индекс:

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 }`

Когда я использую запрос ближнего в оболочке Монго, я получаю эту ошибку:

db.Place.find( { coordinates : { $near : [50,50] } } ) 

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

Спасибо!

1 Ответ

1 голос
/ 31 августа 2011

Вы должны иметь в своей коллекции геопространственный индекс, как описано здесь http://www.mongodb.org/display/DOCS/Geospatial+Indexing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...