我有一个文档集合,其中的文档遵循以下模型:
{
"cardId": "12345678900",
"phone": "123456789",
"name": "Scott",
"services": [
{
"name": "Estudios 3D para vías aéreas"
},
{
"name": "Estudios 3D para ortodoncia"
},
{
"name": "Estudios 3D para senos paranasales",
"doctorId": "ASNDUasd981239nasd"
},
{
"name": "Estudios 3D para implantes dentales",
"pdfUrl": [],
"imgUrl": [],
"doctorId": 1
},
{
"name": "Estudios 3D para vías aéreas",
"imgUrl": [
"https://firebasestorage.googleapis.com/v0/b/cid-imagenes.appspot.com/o/patients%2Fimages%2Frc-upload-1678379057443-9?alt=media&token=b156f890-aa2a-49e8-aa73-52260124b279"
],
"pdfUrl": [
"https://firebasestorage.googleapis.com/v0/b/cid-imagenes.appspot.com/o/patients%2Fdocuments%2Frc-upload-1678379057443-11?alt=media&token=c61378ba-413b-4e89-ba57-3a93e9f66a3f"
]
}
],
"lastname": "Castro",
"birthdate": "Thu Mar 02 2023 15:43:23 GMT-0400 (hora estándar del Atlántico)",
"gender": "M",
"imgUrl": "",
"type": "PATIENT",
"email": "asdasd@asdasd.com",
"referredById": 1
}
如果“services”数组中至少有一个对象包含值为1的doctorId属性,即react中的firebase库,那么我如何获取该集合的所有文档。
我试着用这个方法:
query(ref, where('services', 'array-contains-any', { doctorId: 1 }));
但是它不起作用,因为除了doctorId属性之外,“services”数组中的对象还有其他属性,所以它不匹配
1条答案
按热度按时间pinkon5k1#
array-contains
和array-contains-any
运算符将您指定的值与数组中的每个完整项进行比较,如果完全匹配,则返回文档。不能将它们用于部分匹配。常见的解决方案是,像NoSQL数据库一样,添加额外的数据以支持用例,例如,您可以添加另一个包含所有医生ID的顶级数组字段:
然后可以使用
array-contains
查询该字段: