首页 > 解决方案 > Firebase/Firestore:是否可以查询 .where(x == foo || x == bar)?

问题描述

我有一组用户,如下所示:

在此处输入图像描述

每个关注者/后续文档的结构如下:

{
  uid: ...,
}

我想创建一个满足这些条件的查询:

  1. 获取您关注的用户
  2. 按他们的“最后发布”时间排序(因此您首先获得最近发布的用户)

由于follower/following子集合只包含对完整用户文档的引用,而不是完整文档本身,所以它不像查询下面的子集合那么容易。


这是我尝试过的:

database
.collection('users')
.doc(myUid)
.collection('following')
.get()
.then(followings => {
  database
  .collection('users')
  .orderBy('lastPosted', 'desc')
  .where('uid', '==', following[0] || following[1] ...)
})

这是行不通的。我也想过这个:

database
.collection('users')
.orderBy('lastPosted', 'desc')
.where(myUid exists in their followers subcollection)

我不确定从这里去哪里,或者 Firestore 是否允许这样做。

标签: firebasegoogle-cloud-firestore

解决方案


看:

逻辑或查询。在这种情况下,您应该为每个 OR 条件创建一个单独的查询,并在您的应用程序中合并查询结果。


推荐阅读