2013-08-25 3 views
0
Event Schema: 
    Name:String, 
    Description: String, 
    Location:[ 
      ll:[long,lat] 
      type: String (source,destination) 
    ], 
    CreatedDate:Date, 
    UpdatedDate:Date, 

Пример документа:

{ 
    Name : 'Test1', 
    Description : 'Test1', 
    Location:[{ 
     ll:[{long:-118.2436849,lat:34.0522342}], 
     type: 'source' 
    },{ 
     ll:[{long:2,lat:4}], 
     type: 'destination' 
    }] 
} 

У меня 7 документов, имеющих такую ​​же структуру, как указано выше.

Когда я делаю запрос:

db.events.count({'location.ll' : {$near:[-118.2436849,34.0522342]},'location.type':'source'}); 

Я получаю 14 отсчитать назад. Я должен в идеале получить 7 записей, но я получаю 14 записей. Я не уверен, что я делаю неправильно.

Я уже проиндексированы поле «location.ll» как «2d»

Пожалуйста, дайте мне знать, что я делаю неправильно?

Спасибо за помощь

ответ

2

Это в documented «особенность», и вы можете получить вокруг него, следуя предложения:

Для документов с несколькими значениями координат, запросы могут возвращать тот же документ несколько раз, если более чем одна проиндексированная пара координат удовлетворяет ограничениям запросов. Используйте параметр uniqueDocs для geoNear или оператор $ uniqueDocs с $ geoWithin.

+0

Благодарим Феликс за информацию. Я только что нашел ответ на свой вопрос. Еще раз спасибо. Хотя, у меня есть еще один вопрос: можно ли запросить местоположение и связанный с ним тип. db.events.findOne ({'location.ll': {$ рядом: [2,4], $ uniqueDocs: true, $ maxDistance: 1/3959}, 'location.type': 'd'}). Это в идеале не даст мне никаких результатов, поскольку я запрашиваю все точки около [2,4] с радиусом 1 мили. Но это дает мне результат – Anup

+0

Не уверен насчет '$ near', так как я использую' geoNear' на практике с 'query'. Может быть, вы можете попробовать? :) –

+0

И еще одно замечание: мне кажется, вам нужно '$ elemMatch', но это не работает с' $ near' в соответствии с [этим сообщением об ошибке] (https: //jira.mongodb. org/browse/SERVER-7581) –

Смежные вопросы