当前位置: 首页 > 知识库问答 >
问题:

如何查询Firestore集合中字段值包含在列表中的文档

郦祯
2023-03-14

我有两个Firestore集合,usersposts。下面是每个文件中的典型文档所包含内容的简化示例

此设置使查询任何给定用户按时间顺序排序的帖子变得非常容易,只需查找其所有者字段等于该用户的文档引用的帖子文档。

我在iOS/Swift中通过以下方法实现了这一点,尽管我们正在为iOS、Android和Web构建这个应用程序。

guard let uid = Auth.auth().currentUser?.uid else {
    print("No UID")
    return
}
let firestoreUserRef = firestore.collection("Users").document(uid)
firestorePostsQuery = firestore.collection("Posts").whereField("owner", isEqualTo: firestoreUserRef).order(by: "timestamp", descending: true).limit(to: 25)

是否可以构建我正在描述的查询,或者我将不得不采用这种不太理想的方法?这似乎是一个相当常见的查询用例,所以如果没有实现这一点的方法,我会感到惊讶。

共有1个答案

漆雕唯
2023-03-14

如果您使用的是Unix时间戳,那么按时间顺序排序就很容易,例如,使用.orderby方法的1547608677790。但是,这会给您留下大量的查询需要迭代(每个朋友一个)。

因此,我认为您需要重新考虑数据存储模式。

利用Firebase触发器的云功能。当一个新的帖子被写,有一个云函数计算谁都应该看到它。每个用户都可以有一个包含所有unread-postsread-posts等的数组类型属性。

 类似资料:
  • 我有一个关于过滤特定字段不在值列表中的文档的问题。例如,文档只包含唯一且已索引的“_id”字段。现在我有一个“_id”列表,并想找出“_id”不在“_id”列表中的所有文档。 我可以通过使用$in运算符来实现,例如: 返回列表中ID的所有文档,然后与给定列表进行比较。这种方式的性能对于数千个文档来说还不够好。我想知道是否有更好的方法来做到这一点。例如,是否可以构造一个查询,只返回ID不在列表中的文

  • 我在Firebase Firestore中收集了一些文档,比如:

  • 问题内容: 我的Firestore数据库结构: 现在我想从中获取文件清单。将有一个包含以下数据的列表。我需要它是因为我想制作一个微调器并将这些数据放入微调器中。然后,用户将选择一些文档并下载。 我尝试使用下面的代码: 但是代码只有在我拥有没有文档集合的数据结构时才起作用。在其他情况下,中没有任何文档。 谢谢! 问题答案: 要在中包含所有文档名称的列表,请使用以下代码: 您的logcat中的结果将是

  • 在Firestore中,我有一个用户集合,在每个用户文档中存储一个名为favorites的集合,该集合包含标记为favorites(存储)的文档的ID 我可以采取另一种方法来获取两个集合并手动过滤它们,但我使用的是Firebase RecycerView适配器,它显示的所有数据都基于查询,这将使事情更加高效。 这样的结果是如何实现的呢?如果需要进一步的解释,请告诉我

  • 我有一个Spring Boot存储库,在其中我尝试使用HQL创建一个查询函数。 该函数接受一个整数参数,如果该参数为null,则查询应忽略该参数,否则应检查列表是否包含该值。 我有两个部分,空检查和列表检查,看起来像这样: 现在的问题是,对于(2,3)部分中的myParam,它抱怨“不一致的数据类型:预期的二进制数 (当:myParam为空,对于:myParam!=null它有效) 我试过: >

  • 我正在使用Java开发一个Android应用程序,我使用firestore数据库,我有一个名为用户位置的集合,其结构类似于照片: 分贝 我的问题是,当一个用户改变他的位置或一个新用户进入一个已经存在的位置(其他用户有相同的位置)时,它会创建一个新文档(如在“oran, algerie”中)。当我添加新用户并更新文档时,我想使用,但问题是我无法以正常方式检索根集合的所有文档: 它返回null。我尝试