がすべてで始まるすべての文書を特定の文字列で検索することはできますか?Firestoreクエリ文書startsWith文字列
私はドキュメントを読みましたが、これに適したクエリは見つかりませんでした。
がすべてで始まるすべての文書を特定の文字列で検索することはできますか?Firestoreクエリ文書startsWith文字列
私はドキュメントを読みましたが、これに適したクエリは見つかりませんでした。
でも、それは難しいことです。あなたは、必要な文字列と同じかそれ以上で、後継キーよりも小さいドキュメントを検索する必要があります。例えば
、照会う'bar'
で見つめフィールド'foo'
を含む文書を検索する:
db.collection(c)
.where('foo', '>=', 'bar')
.where('foo', '<', 'bas');
これは実際に私たちがパスに一致する文書のコレクションをスキャンするためのクライアントの実装に使用する技術です。私たちのsuccessor key computationは、現在のユーザーIDで始まるすべてのキーを探しているscannerによって呼び出されます。
Gil Gilbertと同じです。 拡張機能とサンプルコード。 使用String.fromCharCodeと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);
は次に以下のようなコードをフィルタリングします。
db.collection(c)
.where('foo', '>=', startcode)
.where('foo', '<', endcode);
すべての言語およびすべてのUnicodeで動作します。
警告:firestoreのすべての検索条件はCASE SENSITIVEです。
サクセサキーの使用方法は? –
後続キーは、結果に特定の文字列で始まる文字列のみが含まれるようにクエリをバインドします。 foo> = 'bar'だけを検索しなければ、その文字列もbarよりも辞書的に大きいので、 'zoo'も返されます。 –