Firestore 查询文档启动使用字符串

2022-08-31 16:31:04

是否可以查询 firestore 集合以获取以特定字符串开头的所有文档?

我已经浏览了文档,但没有找到任何合适的查询。


答案 1

你可以,但这很棘手。您需要搜索大于或等于所需字符串且小于后续键的文档。

例如,要查找包含与您一起盯着的字段的文档,可以查询:'foo''bar'

db.collection(c)
    .where('foo', '>=', 'bar')
    .where('foo', '<', 'bas');

这实际上是我们在客户端实现中使用的一种技术,用于扫描与路径匹配的文档集合。我们的后续密钥计算扫描程序调用,扫描程序正在查找从当前用户 ID 开始的所有密钥。


答案 2

与吉尔·吉尔伯特(Gil Gilbert)的回答相同。只是一个增强功能和一些示例代码。使用 String.fromCharCodeString.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。

警告:消防商店中的所有搜索条件都区分大小写。


推荐