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»
Пожалуйста, дайте мне знать, что я делаю неправильно?
Спасибо за помощь
Благодарим Феликс за информацию. Я только что нашел ответ на свой вопрос. Еще раз спасибо. Хотя, у меня есть еще один вопрос: можно ли запросить местоположение и связанный с ним тип. db.events.findOne ({'location.ll': {$ рядом: [2,4], $ uniqueDocs: true, $ maxDistance: 1/3959}, 'location.type': 'd'}). Это в идеале не даст мне никаких результатов, поскольку я запрашиваю все точки около [2,4] с радиусом 1 мили. Но это дает мне результат – Anup
Не уверен насчет '$ near', так как я использую' geoNear' на практике с 'query'. Может быть, вы можете попробовать? :) –
И еще одно замечание: мне кажется, вам нужно '$ elemMatch', но это не работает с' $ near' в соответствии с [этим сообщением об ошибке] (https: //jira.mongodb. org/browse/SERVER-7581) –