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?
现在有三 (3) 个 Firestore 产品吗? Cloud Firestore、本机模式下的 Firestore、数据存储模式下的 Firestore?
不,只有两个。 Cloud Firestore 和本机模式下的 Firestore 是相同的。
Cloud Firestore 具有针对
查询的文档。但是,数据存储模式文档中的 Firestore 不显示任何有关 array-contains 的文档。array-contains-any
是的,Firestore 确实提供了 array-contains-any 查询。但是,您询问数据存储模式下的 Firestore 是否包含
array-contains
而不是 array-contains-any
查询。这些查询之间存在很大差异。请注意,Firestore(在本机模式下)提供 array-contains-any 和 array-contains 查询。另一方面,数据存储模式下的 Firestore 不提供 array-contains-any
查询,但它提供了 使用等式过滤器在数组中搜索特定值的功能。
如果标签属性是数组,是否会返回数组中包含“learn”或“study”的实体?如果“标签”字段是字符串,那么它将检查列表中的值。如果“tag”字段是一个数组,它不会根据列表中的每个元素检查数组中的每个元素。最有可能会抛出异常。
如果您想从
array-contains
、
in
、
not-in
或
array-contains-any
等查询中受益,那么我建议您使用Firestore。