我滥用MongoDB的文件了吗?

时间:2015-01-29 18:18:57

标签: mongodb

我有一个网店,有点像eBay。 有卖家和卖家的产品。每个卖家可以有0个或更多他愿意出售的产品。通常,每人约有30人。

现在我每个人都有一个文档,该文档包含用户信息和包含他销售的每个产品的子文档(包括产品的所有照片,价格,标签等)。

我是否滥用MongoDB的文件?我应该用另一种方式吗?

2 个答案:

答案 0 :(得分:1)

我建议您将产品移到单独的集合中(例如products)。只有当您嵌入的文档较小或数量有限时,才应使用嵌入文档。此外,在选择文档时,将产品放在单独的集合中将允许greater flexibility

在您的情况下,您可能有时会选择单个产品(例如查看单个产品的视图),因此将产品保存在单独的集合中是有意义的。

答案 1 :(得分:1)

我建议将产品转移到另一个系列。

基于使用要求,MongoDB数据模式最佳。在这种情况下,用户浏览产品很少会对不同用户销售的所有产品感兴趣。通常,他们会对符合价格和商品描述或商品名称的搜索条件的商品感兴趣。

因此,假设根据您提议的数据模式搜索最近发布的项目。您的查询必须搜索userproduct子文档的每个timePosted数组,并检查product。虽然timePosted集合可以轻松地在user上设置索引,但不需要触及不必要的(user和每个products其他product)文档

查看单个产品页面的用例也很重要,并且还表示使用单独的product集合。

即使您确实需要显示特定user发布的productuser_id集合中的{{1}}搜索也不会很困难。