我开始使用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呢?
谢谢:)
答案 0 :(得分:1)
MongoDB是面向文档的数据库。通常在关系数据库中分解为多个表(即"规范化")的数据通常一起存储在文档数据库中,有时存储在单个集合中。
MongoDB是"无架构,"意味着它没有固定的模式,因此其文档的结构非常灵活。您可以在文档中包含子文档甚至数组,就像在树结构中显示的那样。这使得设计NoSQL架构非常具有挑战性,因为您有许多选项可供选择。实际上,最佳架构取决于您的应用程序以及您将对数据库执行的查询。在SQL数据库中,数据基于数据本身进行规范化,而不考虑查询。
请记住,MongoDB并不支持联接,所以你要分享的任何内容"需要手动加入多个集合。继续使用MongoDB的灵活架构并尝试不同的选项。具有多层嵌套的文档会使查询更加复杂,因此需要像往常一样进行权衡。