我在 firestore 中有一个集合,其中每个文档都包含一组联系人,我想查询那些联系人的电子邮件 ID 为特定值的文档。
我遇到了 whereArrayContains() 过滤器https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContains(java.lang.String,%20java.lang.Object) https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContains(java.lang.String,%20java.lang.Object),具有以下描述:-
公共查询 whereArrayContains(字符串字段,对象值)
创建并返回一个新查询,其中包含文档必须的附加过滤器
包含指定的字段,该值必须是一个数组,并且
数组必须包含提供的值。
一个查询只能有一个 whereArrayContains() 过滤器。
Can the value
在上面的方法中指向对象数组的对象内部的字段?
还有这句话the value must be an array
考虑到方法参数也被调用,有点令人困惑value
。我确信文档意味着field
应出现在文件中并且它的价值应该是一个数组并且该数组应该包含value
范围。
您无法在 Firestore 查询中查询数组中对象的字段。包含数组的查询将与数组中的对象进行比较。
该值必须是一个数组
这是指您尝试查询的字段的值。更好的措辞是
创建并返回一个带有附加过滤器的新查询,该过滤器文档必须包含指定的字段、值指定字段的必须是一个数组,并且该数组必须包含提供的值。
如果您尝试过滤用户 ID 或类似内容,请考虑向您正在查询的对象添加第二个数组,然后将 ID 作为字符串添加到该数组中:
{
"name": "test",
"users": [someUserObject, someOtherUserObject],
"userIds": ["someId", "someOtherId"]
}
然后查询该数组:
someRef.whereArrayContains("userIds", someId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)