首页 > 解决方案 > 对于 Firestore 中的数组,搜索字符串与 int 值有什么缺点吗?

问题描述

我注意到 Firestore 允许对数组进行一些操作,例如 containsAny([...])。

我正在考虑拥有一组值,但我将输入的值是 UUID(字符串)。所以,它可能看起来像这样:

MyCollection {
  categoryIds List<String>
}

我会做类似的操作where(categoryIds, containsAny(uuid1, uuid2))

与我存储数字而不是字符串相比,性能会受到影响吗?这有关系吗?

标签: firebasegoogle-cloud-firestore

解决方案


Firestore 查询通常基于索引,因此我怀疑两者之间是否存在任何性能差异。

另请注意:Firestore“数组”绝对不是数组。它们是有序列表,通常按照它们添加到数组中的顺序。SDK 将它们作为数组呈现给客户端,但 Firestore 本身不会将它们存储为实际数组 - 您在控制台中看到的数字是顺序,而不是索引。匹配数组中的元素(例如,arrayContains)需要匹配整个元素 - 如果您存储对象的有序列表,则不能查询子元素上的“数组”。

客户端 SDK 通常将数组/“有序列表”中的值作为一个数组呈现给您——这与大多数没有原始元素(即有序列表)的语言有关。


推荐阅读