firebase - 对于 Firestore 中的数组,搜索字符串与 int 值有什么缺点吗?
问题描述
我注意到 Firestore 允许对数组进行一些操作,例如 containsAny([...])。
我正在考虑拥有一组值,但我将输入的值是 UUID(字符串)。所以,它可能看起来像这样:
MyCollection {
categoryIds List<String>
}
我会做类似的操作where(categoryIds, containsAny(uuid1, uuid2))
与我存储数字而不是字符串相比,性能会受到影响吗?这有关系吗?
解决方案
Firestore 查询通常基于索引,因此我怀疑两者之间是否存在任何性能差异。
另请注意:Firestore“数组”绝对不是数组。它们是有序列表,通常按照它们添加到数组中的顺序。SDK 将它们作为数组呈现给客户端,但 Firestore 本身不会将它们存储为实际数组 - 您在控制台中看到的数字是顺序,而不是索引。匹配数组中的元素(例如,arrayContains)需要匹配整个元素 - 如果您存储对象的有序列表,则不能查询子元素上的“数组”。
客户端 SDK 通常将数组/“有序列表”中的值作为一个数组呈现给您——这与大多数没有原始元素(即有序列表)的语言有关。
推荐阅读
- laravel - 在 laravel 5.6 中我的刀片视图有一个未定义的索引问题
- python - 用于解码文本信息的字典
- python - 如何在邮递员中读取上传的excel文件?
- javascript - 为什么将 Math.round 输入乘以 1000 然后除以结果?
- c - 将直到EOF的行读入C中的指针
- vba - vba 代码适用于一张工作表,但不适用于第二张工作表
- vba - 使用 ListObject 列引用对表进行排序
- excel - 发现要使用的 SAP 事务字段的组件标识符
- prolog - prolog规则中的比较问题
- android - Firebase Android 聊天对齐错误