如何使用 Kotlin 更深入的属性查询 Firestore 集合? [复制]

Posted

技术标签:

【中文标题】如何使用 Kotlin 更深入的属性查询 Firestore 集合? [复制]【英文标题】:How to query a Firestore collection using a property from a step deeper with Kotlin? [duplicate] 【发布时间】:2018-12-21 21:57:00 【问题描述】:

我有一个用于运输的 Cloud Firestore 数据库:

交通收藏 TransportationId 文档 TransportationName:“私人交通” 汽车 集合 CarId 文档 汽车名称:“出租车” CarId 文档 汽车名称:“私人出租车”

Cars 收藏中,我有超过 100 辆汽车(文件)。我在文档和 *** 上都找不到如何获取 CarName 名称具有特定特定值的所有运输名称。如何解决?

val Taxi = db
    .collection("Transportations").document("TransportationId")
    .collection("Cars").whereEqualTo("CarName", "Private Taxi")

谢谢!

【问题讨论】:

【参考方案1】:

简短的回答是您无法在 Firestore 中实现这一点。您无法查询数据库中的所有汽车,无论它们包含在哪种交通工具中。

但是在这种情况下,有一种解决方法,您应该通过创建一个名为 cars 的新***集合来稍微更改数据库结构,您应该在其中添加所有 car 对象。 Beheath 每个car 对象,您还应该添加所需的transportation 作为属性。这样您就可以根据需要查询数据库了。

您的数据库结构应如下所示:

Firestore-root
   |
   --- cars (collection)
        |
        --- carId (document)
              |
              --- transportation: "Private Taxi"
              |
              --- //other car details

【讨论】:

这意味着我将复制数据。这不是我想要的。 firebaser here 我们知道,以您建议的方式跨多个(子)集合进行查询会导致更简单的代码和更少的数据重复。我们正在考虑添加它,但像往常一样:没有承诺,也绝对没有时间表。复制 Alex 描述的数据是目前实现此用例的唯一方法。 @FrankvanPuffelen 谢谢普夫! @JohansBormman 除了弗兰克的评论,我还推荐你看这个视频,Denormalization is normal with the Firebase Database。适用于 Firebase 实时数据库,但同样的原则适用于 Cloud Firestore。 @FrankvanPuffelen 是的,少写代码会更好:) 谢谢!

以上是关于如何使用 Kotlin 更深入的属性查询 Firestore 集合? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

深入kotlin - 方法引用和属性引用

深入kotlin - 方法引用和属性引用

深入kotlin - 与Java互操作:java调用kotlin

深入kotlin - 与Java互操作:java调用kotlin

深入kotlin - 与Java互操作:java调用kotlin

深入kotlin - 与Java互操作:java调用kotlin