Javascript 哪个是更好的Firestore模式场景?

Javascript 哪个是更好的Firestore模式场景?,javascript,database,firebase,google-cloud-firestore,schema,Javascript,Database,Firebase,Google Cloud Firestore,Schema,我正在使用Firebase Firestore构建一个应用程序,该应用程序将允许用户在酒吧中打开选项卡。我可能会使用两种数据库模式。考虑到where()查询的时间复杂性以及其他建议,我很好奇哪一个是最好的 场景A: 使用一个票据集合设置Firestore。每当用户在条形图上打开选项卡时,在文档中创建一个字段status:true(表示它是一个打开的选项卡)。每当用户关闭选项卡时,该字段就会切换到状态:false。这是一个非常简单的解决方案,因为它只允许在关闭选项卡时切换一个字段,尽管票据收集可能

我正在使用Firebase Firestore构建一个应用程序,该应用程序将允许用户在酒吧中打开选项卡。我可能会使用两种数据库模式。考虑到
where()
查询的时间复杂性以及其他建议,我很好奇哪一个是最好的

场景A:

使用一个
票据
集合设置Firestore。每当用户在条形图上打开选项卡时,在文档中创建一个字段
status:true
(表示它是一个打开的选项卡)。每当用户关闭选项卡时,该字段就会切换到
状态:false
。这是一个非常简单的解决方案,因为它只允许在关闭选项卡时切换一个字段,尽管
票据
收集可能会变得非常大,并且可能会很麻烦,以便Firestore稍后查询

场景B:


将Firestore设置为两个集合:
未结票据
已结票据
。每当用户打开选项卡时,都会在
Open Bills
集合下创建一个文档。正如您所料,每当用户关闭其账单时,它都会从
打开的账单
中删除,并在
关闭的账单
中创建。它本质上就像是从一个移动到另一个,但不幸的是Firestore中没有移动功能。这是我倾向于使用的解决方案,因为如果它进行扩展,可能会减少查询时间,但在写入和删除操作时会导致潜在的失败。

Firestore查询会随着结果集的大小进行扩展。如果返回100个结果,则对1000个文档集合的查询将与对10000000个文档的查询大致相同

在不了解更多细节的情况下,选项A似乎是一种完全合理的方法。我建议的一件事是:不要对状态使用布尔值。现在你认为你有两个州(开放/关闭),但如果未来还有更多的州(开放/关闭/付费)呢

也许一个
状态
字段现在可以
打开
|
关闭
是一种方法