如何使用 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 - 与Java互操作:java调用kotlin
深入kotlin - 与Java互操作:java调用kotlin