Firebase Firestore - OR查询

7 浏览
0 Comments

Firebase Firestore - OR查询

如何通过一个字段的多个值来获取数据?例如,我有一个帖子的数据库,我想查询所有博客Id为1或2的帖子,并按时间戳排序。

collection("posts").whereEqualTo("blogId", "1")

.whereEqualTo("blogId", 2).orderBy("timestamp", Query.Direction.DESCENDING).limit(50)

以上代码不起作用 🙁

如何实现这个功能?

谢谢 🙂

0
0 Comments

Firebase Firestore是一种云数据库服务,用于存储和同步应用程序的数据。在使用Firestore时,有时候我们需要执行一些特定的查询操作,比如在一个字段中检查多个值。然而,在过去,Firestore并不支持这样的查询操作。

为了解决这个问题,Firebase团队最近推出了一个新功能,即"IN"查询。这个功能允许我们在一个字段中检查多个特定的值。具体来说,我们可以使用以下代码进行查询:

database.collection("collectionName").where("fieldName", "in", ["fieldValue1", "fieldValue2"]);

在这个查询中,我们可以检查多达10个值。比如,如果我们想要在"posts"集合中检查"blogId"字段是否包含值"1"或"2",我们可以使用以下代码:

database.collection("posts").where("blogId", "in", ["1", "2"]); 

然而,如果我们想要在多个字段中执行这样的查询,目前的解决方法是使用复合查询。复合查询允许我们通过组合多个查询条件来实现更复杂的查询操作。不过,具体的实现方法可能需要参考Firebase的文档进行进一步确认。

虽然Firebase的"IN"查询功能提供了一种解决方案,但目前仍存在一些限制。首先,我们只能检查多达10个特定的值,这在某些情况下可能不够灵活。其次,对于在多个字段中执行这样的查询,需要使用复合查询来实现,并且具体的实现方法可能需要参考Firebase的官方文档。

希望Firebase团队能够进一步改进这些限制,提供更灵活和强大的查询功能,以满足开发者对数据查询的不同需求。

0
0 Comments

Firebase Firestore中的OR查询问题出现的原因是开发者需要在查询中使用多个条件,并且这些条件之间是“或”的关系。在此之前,Firebase Firestore只支持“与”关系的查询,而没有提供直接的“或”查询功能。

为了解决这个问题,Firebase在2019年11月7日推出了新功能,即IN查询。这个查询可以在一个查询中使用多个条件,这些条件之间是“或”的关系,最多可以使用10个条件。

以下是在Android中使用IN查询的示例代码:

collection("posts").whereIn("blogId", Arrays.asList("1", "2"))
.orderBy("timestamp", Query.Direction.DESCENDING).limit(50);

使用上述代码,我们可以在“posts”集合中查询“blogId”字段的值为“1”或“2”的文档,并按照“timestamp”字段降序排列,最多返回50条结果。

详细的使用方法和示例可以参考Firebase官方文档:Firebase文档

通过引入IN查询功能,Firebase Firestore解决了开发者在查询中需要使用多个条件进行“或”操作的需求。开发者现在可以方便地在查询中使用多个条件,并且这些条件之间是“或”的关系,提高了数据查询的灵活性和效率。

0
0 Comments

Firebase Firestore中的OR查询问题是由于需要同时查询多个条件而引起的。解决方法是使用combineLatest函数将Observables组合在一起,然后返回结果。

在给定的代码中,通过分别查询"blogId"为1和2的数据,并使用combineLatest函数将两个查询的结果合并在一起。最后使用map操作符将结果展平为一个数组,并返回。

需要注意的是,这种方法可能会导致最终结果中存在重复的数据,这取决于查询的具体情况。如果使用多个字段进行查询,可能会导致分页数据变得困难。

对于这个问题的解答非常明确,非常感谢。遗憾的是,这种方法可能是最好的解决方案,Google无法提供更好的解决方法。

0