Có thể truy vấn bộ sưu tập linh kiện để nhận tất cả tài liệu mà bắt đầu bằng một chuỗi cụ thể không?Tài liệu truy vấn Firestore bắt đầuVới chuỗi
Tôi đã trải qua tài liệu nhưng không tìm thấy bất kỳ truy vấn phù hợp nào cho việc này.
Có thể truy vấn bộ sưu tập linh kiện để nhận tất cả tài liệu mà bắt đầu bằng một chuỗi cụ thể không?Tài liệu truy vấn Firestore bắt đầuVới chuỗi
Tôi đã trải qua tài liệu nhưng không tìm thấy bất kỳ truy vấn phù hợp nào cho việc này.
Bạn có thể nhưng nó khó khăn. Bạn cần phải tìm kiếm các tài liệu lớn hơn hoặc bằng chuỗi bạn muốn và ít hơn một khóa kế thừa.
Ví dụ, để tìm các tài liệu có chứa một lĩnh vực 'foo'
nhìn chằm chằm với 'bar'
bạn sẽ truy vấn:
db.collection(c)
.where('foo', '>=', 'bar')
.where('foo', '<', 'bas');
Đây thực sự là một kỹ thuật chúng tôi sử dụng trong việc thực hiện khách hàng cho bộ sưu tập quét các văn bản phù hợp với một con đường. successor key computation của chúng tôi được gọi bằng số scanner đang tìm tất cả các khóa bắt đầu bằng id người dùng hiện tại.
giống như trả lời của Gil Gilbert. Chỉ cần tăng cường và một số mã mẫu. sử dụng String.fromCharCode và String.charCodeAt
var strSearch = "start with text here";
var strlength = strSearch.length;
var strFrontCode = strSearch.slice(0, strlength-1);
var strEndCode = strSearch.slice(strlength-1, strSearch.length);
var startcode = strSearch;
var endcode= strFrontCode + String.fromCharCode(strEndCode.charCodeAt(0) + 1);
sau đó lọc mã như dưới đây.
db.collection(c)
.where('foo', '>=', startcode)
.where('foo', '<', endcode);
Hoạt động trên mọi ngôn ngữ và bất kỳ Unicode nào.
Cảnh báo: tất cả tiêu chí tìm kiếm trong firestore là SỰ CHẤP NHẬN TRƯỜNG HỢP.
Có thể thực hiện điều này một hoặc hai trường trong cùng một tài liệu. Giống như: 'where ('foo', '> =', startcode). Where ('foo', '<', endcode) .địa chỉ ('bar', '<', endcode). Where ('bar,' < ', endcode); ' – Erik
Có thể điều này sẽ xảy ra [Ngoài ra, bạn chỉ có thể thực hiện so sánh phạm vi (<, <=, >,> =) trên một trường duy nhất] (https://firebase.google.com/docs/firestore/query-data /truy vấn) – Erik
Việc sử dụng khóa kế thừa là gì? –
Phím kế thừa giới hạn truy vấn sao cho kết quả chỉ chứa các chuỗi bắt đầu bằng một chuỗi cụ thể. Nếu không có nó tìm kiếm chỉ foo> = 'bar' cũng sẽ trở lại 'sở thú' kể từ khi chuỗi đó cũng lexicographically lớn hơn thanh. –