我在firestore中有一个集合,其中每个文档都包含一系列联系人,我想查询那些联系人的电子邮件ID是特定值的文档 .
我遇到了WhereArrayContains()在https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContains(java.lang.String,%20java.lang.Object)过滤,具有以下描述: -
public Query whereArrayContains(String field,Object value)创建并返回一个新的Query,其中包含文档必须包含指定字段的附加过滤器,该值必须是数组,并且该数组必须包含提供的值 . Query只能有一个whereArrayContains()过滤器 .
上述方法中的 value
可以指向对象数组内对象的字段吗?
此外,由于方法参数也被称为 value
,因此短语 the value must be an array
有点混乱 . 我确信文档意味着 field
应该出现在文档中, its value 应该是一个数组,并且数组应该包含 value
参数 .
2 回答
您无法在firebase查询中查询数组中对象的字段 . 相反,包含数组的查询将与数组中的对象进行比较 .
这是指您尝试查询的字段的值 . 对此更好的措辞
如果您尝试过滤用户ID或类似内容,请考虑向要查询的对象添加第二个数组,然后将ID作为字符串添加到该数组:
然后查询该数组:
根据文档,字段指向数组和值意味着您要检查的String是否存在于数组中 .
数据添加为: -