Nó hoàn toàn không phải là một truy vấn "giống nhau". Có sự khác biệt rõ ràng trong việc sử dụng $ match riêng biệt
giai đoạn, vì quá trình "lọc" chỉ được thực hiện "sau khi" tìm thấy "các địa chỉ gần nhất". Điều này có nghĩa là bạn có khả năng trả về kết quả "ít hơn" vì các tiêu chí không được đưa ra kết hợp.
Đó là lý do tại sao có "query"
trong $ geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Bây giờ đó là cùng một truy vấn. Hoặc nó sẽ giống hệt như vậy nếu bạn sử dụng $ nearSphere
. Vì $ near
không tính đến độ cong của trái đất trong các phép đo khoảng cách. $ nearSphere
và $ geoNear
không.
Nhưng điểm chính là kết hợp với "query"
tùy chọn, vì đó là cách duy nhất bạn thực sự nhận được cả hai tiêu chí được xem xét trong lần tìm kiếm ban đầu.