{
"_id" : ObjectId("5b8cfdc5a4788ace69dfe8avc"),
"userName" : "CAN_020704",
"source" : "web",
"contactDetails" : {
"phone" : NumberLong(0),
"email" : "",
"address" : "",
"city" : "",
"state" : "",
"district" : "",
"subDistrict" : "",
"pinCode" : 0.0,
"constituency" : "",
**"location" : {
"longitude" : 80.250875,
"latitude" : 13.052519
},**
},
"educationalDetails" : [
{
"education" : "5th to 8th",
"specialization" : "",
"passingYear" : 0.0,
"document" : ""
}
],
"coursePreferences" : [
{
"sector" : "Apparel",
"sectorId" : "2",
"subSector" : "Fashion Design",
"subSectorId" : "2",
"jobRole" : "bdfbv",
"qpCode" : "QWE/Q2345",
"createdDate" : ISODate("2018-08-22T05:22:59.800Z")
}
],
"certifications" : [],
"visibleTo" : [],
"createdBy" : "",
"sdmsFinancialYear" : ""
}
Мои данные о местоположении сохранены как устаревшие пары координат внутри contactDetails объекта. Я использовал 2dsphere index
{
"contactDetails.location" : "2dsphere"
}
db.geo.find({"contactDetails.location": {"$near" : [80.248797,13.050599],"$maxDistance":0.005}},{"contactDetails.location":1,"contactDetails.state":1})
Это мой запрос. Но оболочка Монго выдает ошибку.
Error: error: {
"ok" : 0,
"errmsg" : "error processing query: ns=ekaushalnsdc.geoTree: GEONEAR field=contactDetails.location maxdist=0.005 isNearSphere=0\nSort: {}\nProj: { contactDetails.location: 1.0, contactDetails.state: 1.0 }\n planner returned error: unable to find index for $geoNear query",
"code" : 2,
"codeName" : "BadValue"
}
Я понял, что с моим индексом что-то не так. Это работает, если я указываю 2d индекс, но не делает, если я индексирую коллекцию на основе 2dsphere индекса.
Мое требование - найти все документы на расстоянии 1 км от координат, указанных в запросе.