数据存储模式下的 Firestore 是否支持像 Cloud Firestore 一样的数组包含任何查询?

问题描述 投票:0回答:1

Cloud Firestore 具有有关 array-contains-any 查询的文档。但是,数据存储模式下的 Firestore 文档 不显示任何数组包含的文档。它只有

IN
文档。

我的问题是,Datastore 模式下的 Firestore 是否也支持包含查询的数组?也许确实如此,但语法与

IN
查询相同?举个例子:

Query<Entity> query =
    Query.newEntityQueryBuilder()
        .setKind("Task")
        .setFilter(PropertyFilter.in("tag", ListValue.of("learn", "study")))
        .build();

如果

tag
属性是一个数组,这会返回数组包含“learn”或“study”的实体吗?

类似于 Cloud Firestore 中的此示例?

CollectionReference tasksRef = db.collection("Task");
tasksRef.whereArrayContainsAny("tag", Arrays.asList("learn", "study"));

顺便问一下,现在有三 (3) 个 Firestore 产品吗? Cloud Firestore、本机模式下的 Firestore、数据存储模式下的 Firestore?

firebase google-cloud-platform google-cloud-firestore google-cloud-datastore
1个回答
0
投票

现在有三 (3) 个 Firestore 产品吗? Cloud Firestore、本机模式下的 Firestore、数据存储模式下的 Firestore?

不,只有两个。 Cloud Firestore 和本机模式下的 Firestore 是相同的。

Cloud Firestore 具有针对

array-contains-any
查询的文档。但是,数据存储模式文档中的 Firestore 不显示任何有关 array-contains 的文档。

是的,Firestore 确实提供了 array-contains-any 查询。但是,您询问数据存储模式下的 Firestore 是否包含

array-contains
而不是
array-contains-any
查询。这些查询之间存在很大差异。请注意,Firestore(在本机模式下)提供 array-contains-anyarray-contains 查询。另一方面,数据存储模式下的 Firestore 不提供
array-contains-any
查询,但它提供了 使用等式过滤器在数组中搜索特定值的功能。

如果标签属性是数组,是否会返回数组中包含“learn”或“study”的实体?

如果“标签”字段是字符串,那么它将检查列表中的值。如果“tag”字段是一个数组,它不会根据列表中的每个元素检查数组中的每个元素。最有可能会抛出异常。

如果您想从

array-contains

in
not-in
array-contains-any
等查询中受益,那么我建议您使用
Firestore

© www.soinside.com 2019 - 2024. All rights reserved.