【发布时间】:2020-12-21 01:59:52
【问题描述】:
我是 Firestore 和 NoSQL 的新手。我想做一个简单的数据库,它有点关系,有两个表,就关系数据库而言,一个是操作(患者)表,一个是事务(读数)表。
我有一个为患者表和读数表生成数据的应用。 一个应用实例可能包含许多独特患者的数据,并且每个患者在读数表中可能有不同的读数。
在 Firestore 中,我计划通过为提到的每个表格创建两个集合来实现这一点,并为每个患者批量上传文档并阅读相应的集合。 现在,每次我批量上传到 Firestore 时,我想检查输入患者 JSONObjects 中的所有字段是否存在于患者集合中,而不是选择患者 ID,创建一个新患者,生成一个 ID 并输入读数使用给定的患者 ID。
我尝试对事务执行此操作,但仅适用于单个文档,如此处所述,(Can we not query collections inside transactions?) 使用 Batch 时,只有 set()、update() 和 delete() 操作是可能的,正如文档中提到的那样,使用 batchget 时,我们只能使用文档 ID 而不是字段进行搜索。
我有什么办法可以做到这一点,架构有什么问题吗?
【问题讨论】:
-
请提供一到两条示例记录。患者的唯一识别字段是什么?架构的一个想法是从一个独特的患者属性派生的文档 id 的集合,而读数是患者的子集合。
-
所有患者字段都应该是唯一的。实际上,我主要关心的是更新患者集合而没有任何重复。
标签: google-cloud-firestore nosql relational-database upsert