【发布时间】:2019-08-16 02:51:47
【问题描述】:
我一直是reading a lot 的best practices 以及我应该如何embrace the _id。老实说,如果我在开始扩展我的应用程序时不这样做,我可能会面临这样的后果,这让我有点偏执。
目前每个数据库大约有 50k 个文档。仅仅几个月的大量使用。我希望这会增长很多。我做了很多.find()Mango Queries,索引不多;老实说,处理关系风格的文档结构。
例如:
- 首先从 ID 获取项目。
- 然后执行以下查找查询:
- 抓取所有
type:signature,其中project_id: X。 - 抓取所有
type:revisions,其中project_id: X。
- 抓取所有
这样做的原因是我非常努力地不更新文档。很多这些文档都是离线创建的,所以执行一次写入工作流对我来说非常重要,以避免冲突。
由于日程安排变得非常紧张,我目前处于无法返回的状态。如果我想改变我现在做事的方式,最好的时机是在它变得太疯狂之前。
我很想听听您对使用 _id 进行数据结构化的想法以及人们的想法。
能够像这样使用 _all_docs 抓取功能拨打一个电话对我来说很有吸引力:
{
"include_docs": true,
"startkey": "project:{ID}",
"endkey": "project:{ID}:\ufff0"
}
如何设置我的文档的一种类型的示例如下:
主文档
{
_id: {COUCH_GENERATED_1},
type: "project",
..
.
}
签名文件
{
_id: {COUCH_GENERATED_2},
type: "signature",
project_id: {COUCH_GENERATED_1},
created_at: {UNIX_TIMESTAMP}
}
更改为主文档
{
_id: {COUCH_GENERATED_3},
type: "revision",
project_id: {COUCH_GENERATED_1},
created_at: {UNIX_TIMESTAMP}
data: [{..}]
}
我想知道我是否应该这样做:
主文档:_id: project:{kuuid_1}
签名文件:_id: project:{kuuid_1}:signature:{kuuid_2}
更改为主文档:_id: project:{kuuid_1}:rev:{kuuid_3}
我只是想以一种将来不会打扰我的方式来设置我的数据库。我知道会出现问题,但如果可以避免的话,我不想对结构进行大量更改。
我想到这个的另一个原因是我在我的数据库中关注_changes,并且能够知道正在通过什么类型,而无需在每次文档更改时都获取每个文档听起来也很吸引人。
【问题讨论】: