यह बिल्कुल "समान" क्वेरी नहीं है। एक अलग $matchकोड का उपयोग करने में एक अलग अंतर है। कोड>
चरण, चूंकि "फ़िल्टरिंग" केवल "के बाद" किया जाता है, "निकटतम परिणाम" पाए जाते हैं। इसका मतलब है कि आप संभावित रूप से "कम" परिणाम लौटा सकते हैं क्योंकि मानदंड संयोजन में जारी नहीं किए गए हैं।
इसलिए एक "query"
है $geoNear
में विकल्प
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
अब वही क्वेरी है। या यह बिल्कुल वैसा ही होगा यदि आप $nearSphere<का इस्तेमाल करते हैं /कोड>
. चूंकि $near
दूरी की गणना में पृथ्वी की वक्रता के लिए जिम्मेदार नहीं है। $nearSphere
और $geoNear
करता है।
लेकिन मुख्य बिंदु "query"
. के साथ संयोजन कर रहा है विकल्प, चूंकि यही एकमात्र तरीका है जिससे आप प्रारंभिक खोज में दोनों मानदंडों पर विचार कर सकते हैं।