带文件的文件的Mongo文件(一棵树!)

时间:2015-11-06 18:36:37

标签: mongodb database nosql

我开始使用MongoDB,我有一个集合,其中包含可能有子文档的文档,可能有子文档......一棵树。

library(zoo)
library(data.table)
setDT(df)[,  B:= na.aggregate(B), A]
df
#      A    B
#1:  apple  1.0
#2:  apple  2.0
#3:  apple  1.5
#4: orange  7.0
#5: orange  7.0
#6:  melon 14.0
#7:  melon 15.0
#8:  melon 15.0
#9:  melon 16.0

我应该明确地这样做,我应该将每个子文档存储在另一个集合中并将ID存储在一个数组上,还是应该使用传统的关系SQL DB呢?

谢谢:)

1 个答案:

答案 0 :(得分:1)

MongoDB是面向文档的数据库。通常在关系数据库中分解为多个表(即"规范化")的数据通常一起存储在文档数据库中,有时存储在单个集合中。

MongoDB是"无架构,"意味着它没有固定的模式,因此其文档的结构非常灵活。您可以在文档中包含子文档甚至数组,就像在树结构中显示的那样。这使得设计NoSQL架构非常具有挑战性,因为您有许多选项可供选择。实际上,最佳架构取决于您的应用程序以及您将对数据库执行的查询。在SQL数据库中,数据基于数据本身进行规范化,而不考虑查询。

请记住,MongoDB并不支持联接,所以你要分享的任何内容"需要手动加入多个集合。继续使用MongoDB的灵活架构并尝试不同的选项。具有多层嵌套的文档会使查询更加复杂,因此需要像往常一样进行权衡。