I am not getting the correct results from using $geoNear in the aggregate pipeline. The same query using a typical find () query (using $near ) really returns the correct results.
BUT , when deleting the equality condition (on schedule.key ), both requests return the correct data.
$geoNear using an aggregate pipeline:
db.place.aggregate( [ { $geoNear: { spherical: true, near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] }, distanceField: "dist" } }, { $match: { "schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" } } } ])
$near find the query:
db.place.find( { "point" : { $near: { type: "Point", coordinates: [ 18.416145,-33.911973 ] } }, "schedule.key" : { $eq : "vo4lRN_Az0uwOkgBzOERyw" } })
The document in this collection looks something like this:
{ "_id" : UUID("da6ccbb1-3c7a-45d7-bc36-a5e6007cd919"), "schedule" : { "_id" : UUID("587de5b7-a744-4b28-baa8-e6efb5f7f921"), "key" : "vo4lRN_Az0uwOkgBzOERyw" }, "point" : { "type" : "Point", "coordinates" : [ 18.425102, -33.922153 ] }, "name" : "Cape Town" }
I created the corresponding index in the dot field:
db.place.ensureIndex( { "point" : "2dsphere" } );
source share