[英]whereGreaterThanOrEqualTo and whereArrayContains number of reads in firestore
[英]Problems with Google Firestore collectionGroup - whereArrayContains
我正在开发一个用 Java 编写的 Android 应用程序。 我正在尝试使用collectionGroup和whereArrayContains查询 Cloud Firestore 中的文档。
我在 Cloud Firestore 中的结构如下所示:
Teams (collection)
- teamUUID (document)
- reservations(collection)
- reservationDate (document)
- places (collection)
- userUUIDs (array of strings)
-> one entry ->"vQn9vbWzTtcsB71hgPBhX2uWBuI3"
- placeID (document)
我想获取集合场所中的所有文档,其中userUUIDs字段包含特定字符串。 我的代码如下:
db.collectionGroup("places")
.whereArrayContains("userUUIDs",
"vQn9vbWzTtcsB71hgPBhX2uWBuI3")
.get()
.addOnSuccessListener(queryDocumentSnapshots -> {
Log.d(TAG, String.valueOf(queryDocumentSnapshots.getDocuments().size()));
if (queryDocumentSnapshots.isEmpty()) {
//nothing found
Log.d(TAG, "nothing found for this user");
如果执行此代码,则查询成功,但不返回任何文档。 如果我遗漏了.whereArrayContains("userUUIDs", "vQn9vbWzTtcsB71hgPBhX2uWBuI3"),则返回一个文档。
Google Firestore 自动创建索引来查询“userUUIDs”。
为什么使用whereArrayContains没有返回文档?
编辑:所有查询都存在问题接缝。 我向位置添加了一个字符串testValue并进行了whereEqualTo查询。 结果是一样的。 创建索引后(通过控制台中的链接自动),onSuccessListener 代码被执行,但没有找到文档。
提前致谢。
为什么使用 whereArrayContains 没有返回任何文档?
因为您很可能没有创建正确的索引。 如果userUUIDs
存在于“places”集合中的文档中,则在运行应用程序时,您会在 logcat 中找到如下消息:
原因:io.grpc.StatusException:FAILED_PRECONDITION:查询需要收集位置和字段 userUUID 的 COLLECTION_GROUP_CONTAINS 索引。 你可以在这里创建它: https://console.firebase.google.com/v1/r/project/..
您只需单击该链接或复制,然后将 URL 粘贴到 web 浏览器中,您的索引就会自动创建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.