MongoDB历史数据存储-最佳实践?

MongoDB历史数据存储-最佳实践?,mongodb,database,nosql,Mongodb,Database,Nosql,假设我有一个具有ID的用户,并且我希望每天在此用户上存储一个历史记录(文档),那么更好的方法是: 为每个记录创建新文档并搜索用户id;或 不断更新和嵌入数据到一个单用户文档中,并随着时间的推移不断增长 大多数情况下,我只想为用户检索当前文档,但所有记录都应该可以随时访问,而无需进行超长搜索/查询。文档的大小是有限制的。它(从v1.8开始)是16MB。因此,如果您进行更新和嵌入,那么您的空间就不够了。此外,mongo根据集合中的平均文档大小分配文档空间。如果您不断调整/调整大小,这可能会对性能

假设我有一个具有ID的用户,并且我希望每天在此用户上存储一个历史记录(文档),那么更好的方法是:

  • 为每个记录创建新文档并搜索用户id;或
  • 不断更新和嵌入数据到一个单用户文档中,并随着时间的推移不断增长

大多数情况下,我只想为用户检索当前文档,但所有记录都应该可以随时访问,而无需进行超长搜索/查询。

文档的大小是有限制的。它(从v1.8开始)是16MB。因此,如果您进行更新和嵌入,那么您的空间就不够了。此外,mongo根据集合中的平均文档大小分配文档空间。如果您不断调整/调整大小,这可能会对性能产生负面影响


我认为为每条记录创建新文档要安全得多,如果/当您想要整理这些数据时,您可以在map/reduce作业中完成

有很多变量可以影响这样的决定。一个大的文档似乎最明显,只要它不会增长到不实际的大,甚至是不允许的大小(请注意,一个文档的大小最多可以是16MB)


每个条目使用文档也是完全可行的,只要您创建了适当的索引,就不会导致查询速度变慢。

从1.8开始,大小限制为16MB;)谢谢你的回答。由于两个答复的质量相同(IMHO),我会将Remons一个标记为正确,因为到目前为止,你还有一次投票,他也没有那么多分数,希望你不介意。您的回答仍然非常感谢。考虑到大多数时候您只需要当前文档,您应该更感兴趣的是能够“无需超长搜索/查询”检索到该文档。是的,这正是我所想的,但只是想确保这实际上是正确的方法(也感谢编辑)