我可以将所有用户数据添加到mongodb的一个对象中吗?

时间:2019-03-27 19:02:18

标签: node.js mongodb mongodb-query

是否可以将所有数据添加到集合中的一个对象中, 例如:
 

 {
  id:134....,
  fullname : "jack...",
  email : "amsdk@gm....",
  messages :[
   all messages here
   Perhaps up to fifty thousand items
 ],
  orders : [
   all orders here
 ],.........
 }

这会导致服务器过载吗?

1 个答案:

答案 0 :(得分:0)

Mongo文档为selecting a data model提供了有用的指导。您上面描述的嵌套模型称为Embedded Data Model

  

通常,嵌入可为读取操作提供更好的性能,   以及请求和检索相关数据的能力   单数据库操作。嵌入式数据模型可以实现   一次原子写入操作即可更新相关数据。

嵌入文档简化了数据库中获取数据。不利的一面是,添加和更新具有复杂文档层次结构的文档可能具有挑战性。

Mongo将传统的PK / FK结构称为Normalized Data Model

  

通常,使用归一化的数据模型:

     
      
  • 嵌入时会导致数据重复,但无法提供足够的读取性能优势,胜过重复所带来的影响。
  •   
  • 代表更复杂的多对多关系。
  •   
  • 为大型分层数据集建模。
  •   

聚合管道可能令人恐惧,这可能使嵌入式数据模型更具吸引力。如果您有这种感觉,请查看此free course on the MongoDB Aggregation Pipeline。如果您可以放心地跨馆藏检索相关数据,那么标准化数据模型可能会更具吸引力。

使用每个模型的较小数据集测试读/写查询。您将清楚了解每种方法的优点和挑战。对于我当前的项目,我发现规范化数据模型简化了所需的许多写操作。最终,将诸如 orders users 之类的关注点分离到不同的集合中被证明更加简单,尤其是在我了解了如何使用$lookup合并相关集合中的数据之后。