Bạn đã thử sử dụng khung tổng hợp chưa?
Đường ống hai giai đoạn có thể hoạt động:
- một $ đối sánh giai đoạn sử dụng truy vấn $ geoWithin hiện có của bạn.
- a $ sort giai đoạn sắp xếp theo
relevance: -1
Dưới đây là một ví dụ về nó có thể trông như thế nào:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Tôi không chắc nó sẽ hoạt động như thế nào. Tuy nhiên, ngay cả khi nó kém với MongoDB 2.4, nó có thể khác biệt đáng kể ở 2.6 / 2.5, vì 2.6 sẽ bao gồm cải thiện hiệu suất sắp xếp tổng hợp .