【发布时间】:2020-07-07 19:00:43
【问题描述】:
whereEqualTo API 可以将Any 作为其参数。这是否意味着我可以将HashMap<K, V> 传递给它,它会将其匹配字段与Firestore 数据库中map 类型的字段进行比较,还是我必须手动比较地图的每个属性?
我已经建立了一个这样的查询
collection.whereEqualTo("meta", hashMapOf( // <-- using full hash-map for matching
"user" to "JD",
"name" to "John"
))
其中meta 是一个map 类型的字段,具有两个键/值对。
我要匹配的文档具有以下结构:
{
"createdOn": as timestamp
...other properties
"meta": as map
{
"user": "JD", as string
"name": "John" as string
}
}
我使用的条件应该会产生一些结果,但它不会(没有崩溃)所以我想知道我是否在其他地方犯了错误,或者这种类型的查询根本不支持?结果为空。
我也可能只搜索 name 属性,使用像这样的更简单的查询来查找所有 Johns
collection.whereEqualTo("meta", hashMapOf( // <-- using parcial hash-map for matching
"name" to "John"
))
它会仅匹配 name 字段还是需要完整映射?
我的意思是,前面的查询应该工作还是我需要重写?
collection
.whereEqualTo("meta.user", "JD")
.whereEqualto("meta.name", "John")
【问题讨论】:
-
请编辑问题以显示您认为该查询应该匹配的文档。还要清楚
user和name是什么。对值进行硬编码效果最好。
标签: android kotlin google-cloud-firestore hashmap equality