Tôi đang sử dụng Firebase để lưu trữ Người dùng với vĩ độ và kinh độ được quét gần đây nhất của họ.Truy vấn cho các vị trí lân cận
Một mục trông như thế này:
"Bdhwu37Jdmd28DmenHahd221" : {
"country_code" : "at",
"firstname" : "John",
"gender" : "m",
"lat" : 11.2549387,
"lon" : 17.3419559
}
Bất cứ khi nào một người dùng nhấn một nút cụ thể "tìm kiếm", tôi muốn chức năng căn cứ hỏa lực của tôi để lấy những người gần nhất với người gửi yêu cầu.
Vì Firebase chỉ cho phép quering sau một trường, tôi quyết định thêm mã quốc gia, để loại có một số hạn chế về phạm vi và truy vấn cho trường đó. Nhưng nó vẫn còn siêu chậm khi tôi tải mọi người dùng của một quốc gia cụ thể và sau đó kiểm tra khoảng cách nhỏ nhất giữa một người dùng cụ thể và tất cả những người dùng khác trong cùng một quốc gia.
Đã có 5 người dùng, chức năng sẽ mất 40 giây để đạt được kết quả.
Tôi cũng đã đọc về các chỉ mục phức hợp, nhưng tôi sẽ cần bằng cách nào đó kết hợp vĩ độ và kinh độ và truy vấn cho cả hai trường.
Có cách nào để nhận truy vấn thứ hai và thứ ba ở đây không (ví dụ: tìm kiếm cùng một country_code và sau đó cho một vĩ độ và vĩ độ tương tự) hoặc tôi phải giải quyết điều này bên trong mã máy chủ của mình?
https://github.com/firebase/geofire – cartant