如何在Firebase Cloud文档的字段中搜索多个值?

时间:2020-04-07 13:34:05

标签: java android firebase google-cloud-firestore

所以我试图在我的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”(或者可能比这更多的产品),是否可以查询文档“名称”字段等于多个值或为有没有更好的方法来组织收藏夹活动?

1 个答案:

答案 0 :(得分:1)

是否可以查询文档“名称”字段等于多个值的集合,还是有更好的方法来组织收藏夹活动?

当然可以,使用的数组最多可以包含10个值。根据文档:

类似地,使用array-contains-any运算符将同一字段上的多达10个array-contains子句与逻辑OR组合。

因此,您应该使用以下查询:

usersRef.whereArrayContainsAny("name", Arrays.asList("Air Force 1", "Yeezy Boost 700"));