Mongodb 增加文档与插入新文档

Mongodb 增加文档与插入新文档,mongodb,database-design,Mongodb,Database Design,假设我需要设计一个数据模型,在其中存储人员的地址更改。我可以想出两种方法来实现它:更新此人的文档,或者插入表示更改的新文档 使用更新方法,每个人都有一个文档,其中包含一个地址数组,当该人的地址发生更改时,会将一个地址添加到该数组中 使用插入方法,每个人可能有多个文档。每份文件代表相关人员的地址变更 假设文档中存储的唯一人员信息是该人员的唯一标识符和地址。我将其精确到可以忽略使用插入方法的数据重复 当MongoDB用作数据库时,建议采用哪种方法?应根据应用程序的需要最终确定数据模型的设计 在更新现

假设我需要设计一个数据模型,在其中存储人员的地址更改。我可以想出两种方法来实现它:更新此人的文档,或者插入表示更改的新文档

使用更新方法,每个人都有一个文档,其中包含一个地址数组,当该人的地址发生更改时,会将一个地址添加到该数组中

使用插入方法,每个人可能有多个文档。每份文件代表相关人员的地址变更

假设文档中存储的唯一人员信息是该人员的唯一标识符和地址。我将其精确到可以忽略使用插入方法的数据重复


当MongoDB用作数据库时,建议采用哪种方法?

应根据应用程序的需要最终确定数据模型的设计

在更新现有文档或插入新文档时,需要注意以下几点

更新现有文件

优点:

  • 检索地址要容易得多
缺点:

  • 文档的大小可能超过16MB。MongoDB支持高达16MB数据限制的文档
插入新文档

优点:

  • 地址检索仅基于此人的唯一标识符
  • 文档的大小将始终小于16MB
缺点:

  • 我们最终将为每个地址更改创建文档
  • 检索带有地址的人员详细信息的查询将非常复杂

我建议在不超过数据限制的情况下更新现有文档。

哪种方法适合您?实际上,“嵌入”的整个概念主要是针对“大部分时间使用大部分数据”的情况,反之,链接是指“大部分时间使用数据的子集”。另一个基本约束是“大小”,因为将阵列增长到无法分解的比例(即使低于16MB BSON限制)对性能没有好处。因此,它实际上是关于“如何使用它”,而不是一般性的建议或“做事方式”。做最适合你的事。如果没有对用法的澄清,没有答案能真正告诉你该选择什么。