Java 如何在Firebase云文档的字段中搜索多个值?
因此,我正试图在我的android移动应用程序中创建一个最受欢迎的页面。这些产品都属于自己的顶级系列,其结构如下:Java 如何在Firebase云文档的字段中搜索多个值?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,因此,我正试图在我的android移动应用程序中创建一个最受欢迎的页面。这些产品都属于自己的顶级系列,其结构如下: { "Trainers": { "trainer1": { "brand": "Nike", "name": "Air Force 1", "colour": "Black" "url": ".................." //FOR IMAGES }, "trainer2": {
{
"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”(或者更多的产品),是否可以查询文档“name”字段等于多个值的集合,或者是否有更好的方法来组织收藏夹活动
是否可以查询文档“名称”字段等于多个值的集合,或者是否有更好的方法来组织收藏夹活动
当然可以,使用最多可以包含10个值的数组。根据文件:
类似地,使用array contains any运算符将同一字段上最多10个array contains子句与逻辑或
组合
因此,在您的情况下,您应该使用以下查询:
usersRef.whereArrayContainsAny("name", Arrays.asList("Air Force 1", "Yeezy Boost 700"));
很好,这也是我搜索时发现的,但这是唯一的方法吗?因此,它将用户最喜欢的对象限制为10个。对
查询
对象的每次get()
调用都会返回一个任务
对象。您可以创建多个此类对象和。如果你需要10个以上的元素,这就是你可以使用的方法。