Một số giả định:-
1. Giả sử có 300 bản ghi phù hợp dựa trên vị trí.
2. Giả sử bộ 100 kết quả đầu tiên không có thẻ pizza. 200 tài liệu còn lại (101 đến 300) có tag pizza
Truy vấn 1:-
- Có 2 hoạt động đường ống $ geoNear và $ match
- Đầu ra của hoạt động đường ống $ geoNear là đầu vào cho hoạt động của $ matchpipeline
- $ geoNear tìm thấy tối đa 100 kết quả (giới hạn mà chúng tôi đã chỉ định) dựa trên vị trí được sắp xếp theo khoảng cách gần nhất đến xa. (Xin lưu ý rằng 100 kết quả được lấy lại hoàn toàn dựa trên vị trí. Vì vậy, 100 kết quả này không chứa bất kỳ tài liệu nào có thẻ "pizza")
- 100 kết quả này được gửi đến hoạt động đường ống tiếp theo $ match từ nơi quá trình lọc diễn ra. Nhưng vì tập hợp 100 kết quả đầu tiên không có thẻ pizza, đầu ra trống
Truy vấn 2:-
- Chỉ có 1 hoạt động đường ống $ geoNear
- Có một trường truy vấn được bao gồm trong hoạt động đường ống $ geoNear $ geoNear tìm thấy tối đa 100 kết quả (giới hạn chúng tôi đã chỉ định) dựa trên vị trí được sắp xếp theo khoảng cách gần nhất đến xa và querytag =pizza
- Bây giờ ở đây, các kết quả từ 101 đến 200 được trả về dưới dạng đầu ra khi truy vấn được đưa vào hoạt động đường ống $ geoNear. Vì vậy, câu đơn giản mà chúng tôi nói, hãy tìm tất cả tài liệu có vị trí [x, y] withtag =pizza.
Tái bút:- Giai đoạn đường ống $ nhóm được thêm vào chỉ để tính số lượng và do đó không viết về nó trong phần giải thích