所以我试图在我的android移动应用程序中创建一个收藏夹页面。这些产品位于自己的顶级收藏集中,其结构如下:
{
"Trainers": {
"trainer1": {
"brand": "Nike",
"name": "Air Force 1",
"colour": "Black"
"url": ".................." //FOR IMAGES
},
"trainer2": {
"brand": "Adidas",
"name": "Yeezy Boost 700",
"colour": "Black"
"url": ".................."
},
"trainer3": {
"brand": "Nike",
"name": "Air Spiridons",
"colour": "Cream"
"url": ".................."
}
}
}
然后,我将要得到另一个顶级集合,其中包含名为用户ID的文档,然后是他们最喜欢的教练“名称”的数组。但是,为了填充“收藏夹”页面,我需要在用户收藏夹文档中为每只鞋子搜索“ Trainer”集合。
所以回到我的问题,如果User1喜欢“ Air Force 1&Yeezy Boost 700”(或者可能比这更多的产品),是否可以查询文档“名称”字段等于多个值或为有没有更好的方法来组织收藏夹活动?
答案 0 :(得分:1)
是否可以查询文档“名称”字段等于多个值的集合,还是有更好的方法来组织收藏夹活动?
当然可以,使用的数组最多可以包含10个值。根据文档:
类似地,使用array-contains-any运算符将同一字段上的多达10个array-contains子句与逻辑
OR
组合。
因此,您应该使用以下查询:
usersRef.whereArrayContainsAny("name", Arrays.asList("Air Force 1", "Yeezy Boost 700"));