Nik*_*wal 3 android firebase google-cloud-firestore
我在Firestore中有一个集合,其中每个文档都包含一个联系人数组,并且我想查询那些联系人的电子邮件ID是某个值的文档。
我在https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContains(java.lang.String,%20java.lang.Object)处遇到了whereArrayContains()过滤器,具有以下说明:-
public Query whereArrayContains(字符串字段,对象值)
创建并返回带有附加过滤器的新查询,该附加过滤器的文档必须包含指定的字段,该值必须是一个数组,并且该数组必须包含提供的值。一个查询只能有一个whereArrayContains()过滤器。
value上面的方法中的能否指向对象内部的对象数组?
此外,the value must be an array由于方法参数也称为,因此该短语有点令人困惑value。我确信文档意味着文档中field应该存在,并且其值应该是一个数组,并且该数组应该包含value参数。
您无法在Firestore查询中查询数组中对象的字段。相反,包含数组的查询将与数组中的对象进行比较。
该值必须是一个数组
这是指您要查询的字段的值。更好的措辞是
创建并返回一个新的查询与所述额外的过滤器的文档必须包含指定字段,则该值将指定字段的必须是一个数组,并且所述阵列必须包含所提供的值。
如果您尝试过滤用户ID或类似内容,请考虑将第二个数组添加到要查询的对象,然后将ID作为字符串添加到该数组:
{
"name": "test",
"users": [someUserObject, someOtherUserObject],
"userIds": ["someId", "someOtherId"]
}
Run Code Online (Sandbox Code Playgroud)
然后查询该数组:
{
"name": "test",
"users": [someUserObject, someOtherUserObject],
"userIds": ["someId", "someOtherId"]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4301 次 |
| 最近记录: |