Jos*_*h D 7 mongodb nosql node.js firebase google-cloud-firestore
对于那些使用 Firebase (Firestore) 的人来说,您可以拥有一个包含文档的集合,其中每个文档都有一个 id,然后集合可以保存一个子集合(相当于作为属性的文档数组的嵌入文档) )。
然后,这个子集合可以容纳许多文档,而每个文档都有一个 id。
在 Firestore 中,子集合是延迟加载的。
它将获取该集合上的文档,但如果有一个或多个子集合,则除非专门转到该路由,否则它将不会检索它。例如:集合/文档/子集合名称/另一个文档
所以有2个问题:
编辑:我目前有一个 firestore 实现,其背后有一个子集合/s 实践。
示例:组织=>文档 ID =>项目= >项目ID => 活动=> :activityType =>活动 ID
现在,它的好处是,如果我选择获取所有组织,那么我将仅获取组织集合的文档,而不是嵌入的子集合(项目等) ,而在MongoDB中,我将获取每个文档的所有内容。
如何在 MongoDB 中实现具有自己的嵌套文档结构和延迟加载效果的相同嵌套文档?
一个项目可以有多少个活动?如果没有限制,那么您最好为活动创建根级别集合。在 MongoDB 中,最大 BSON 文档大小为16 MB。也就是说,您可能无法将所有项目及其活动存储在单个文档(组织文档)中。
我会创建 3 个集合,即组织、项目和活动。
我添加了这些额外的organizationID,projectID字段,即使您_id希望在其中包含 Firestore 文档 ID 以便更轻松地进行并排查询。
通过这种方式,您不必担心16 MB文档大小限制,只要您拥有正确的 ID,查询项目和活动就会变得更加容易。
查询某个项目的活动:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
Run Code Online (Sandbox Code Playgroud)
此后,您可以决定如何使用投影、聚合等编写查询。
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |