MongoDB 数据库的设计

MongoDB design of a database

所以,我正在为要插入数据库的文档设计模型,我对设计有疑问。是在我的 collections 中插入更多文档还是更少的嵌套文档更好? 示例:

sale:{
  store_id : "2",
  vendor_id: "2,
  points : 100
}


sale:{
  store_id : "2",
  vendor_id: "2,
  points : 100
}


sale:{
  store_id : "2",
  vendor_id: "2,
  points : 100
}

sale:{
  store_id : "4",
  vendor_id: "3,
  points : 100
}

sale:{
  store_id : "4",
  vendor_id: "1,
  points : 100
}

因此,在这个非嵌套示例中,如果我有 N 笔销售,我将在我的 collections 中有 N 笔销售。但是如果我尝试嵌套,我的示例将是:

stores:{ [
  store_id : "2" 
  vendor : [
      vendor_id : "2"
      sales : [
        points : 100
      ],
      [ 
        points : 100
      ],
      [
        points : 100
      ]
  ]
],
[
  store_id: 4
  vendor : [
    vendor_id : 3
    sales : [
      point : 100
    ]
  ],
  [
    vendor_id : 1
    sale : [
      point : 100
    ]
  ]
] }; 

在这个例子中,我嵌套了我所有的销售。 所以,我的问题是:创建报告和分析数据,哪个更快?例如,如果我想查看哪个商店卖得更多,分析嵌套文档或单行文档会更快吗?

提前致谢。

答案很简单。如果您知道会有很多销售并且数量不限,则必须单独进行 collection 销售。 Mongodb 旨在即使在 collection 中有一百万个文档也能以惊人的速度执行,但有趣的是,您将通过嵌套面临很多问题。 mongodb 中还有 16mb 的文档大小限制,因此最终在一段时间后,您的一个存储文档将达到该限制,这会使事情变得非常难看。 很直白,你应该单独去collection。

你也可以看看这篇博文,它会帮你理清头绪 https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1