【发布时间】:2021-11-23 04:42:41
【问题描述】:
假设我有一个 MongoDB,其中我有单独的 texts,其中包含 statements。
我需要能够搜索texts,它在statements 中有某些关键字(还有多个出现搜索词的文本)。
我还需要能够在特定用户添加的所有文本中找到所有statements,其中包含特定的搜索短语。
我的问题:我需要为statements 创建一个单独的集合还是可以简单地将它们嵌套添加到texts 集合中?
所以,选项 1(单独的集合):
文本集合
text: {
name: 'nabokov',
id: '1'
}
语句集合:
statement: {
text_id: '1',
id: '24',
text: 'He opened the window and saw the sky`
}
选项 2(嵌套):
text: {
name: 'nabokov',
id: '1'
statements: [
id: '24',
text: 'He opened the window and saw the sky`
]
}
如果我想根据关键字搜索分别检索语句并保留上下文数据(例如它们属于哪个文本等),哪种 MongoDB 存储架构更好
这将如何影响较大 DB(例如 > 100 Gb)的写入/读取速度。
我的文本将被限制为 16 Mb。
【问题讨论】:
-
option2 中的语句数组应该有多大(有多少成员)?这是决定的重要因素。大文档 => 较慢的更新(加载到内存中)=> 如果您经常更新它们会出现问题
-
@Takis_ 那里可能有数万条语句。您认为将它们写入单独的集合而不是文档中会更快吗?
-
我想是这样,但如果你想ask here also 给他们所有可能的信息,最好也问更有经验的人
标签: mongodb database-design database-schema