【发布时间】:2018-10-30 21:15:23
【问题描述】:
我必须设计一个模式,以便我可以存储用户 ID 和他们的订单,除了我想存储订购的产品数量之外,我还可以存储多个产品,如面包、黄油,请指导。
【问题讨论】:
-
这个网站不是寻找指导/指导的好地方。
标签: node.js mongodb express mongoose
我必须设计一个模式,以便我可以存储用户 ID 和他们的订单,除了我想存储订购的产品数量之外,我还可以存储多个产品,如面包、黄油,请指导。
【问题讨论】:
标签: node.js mongodb express mongoose
很难为您的问题提供真正的解决方案,因为设计 NoSQL 数据库结构取决于您希望如何访问数据。您可以将订单作为嵌套/嵌入文档保存在用户模型中,或将它们存储在单独的集合中。在第一种情况下,您将在一个请求中拥有所有数据,但您将无法查询和接收符合某些条件的订单,因为您将获得所有订单,包括匹配的订单。然后你需要过滤掉它们。或者你可以使用聚合来得到你需要的东西。 但是,要记住一个限制。 MongoDB 文档有一个size limitation - 16 megabytes。由于用户可能有很多订单,您肯定可以达到某些用户的文档大小限制。聚合也有一个限制 - Pipeline stages have a limit of 100 megabytes of RAMe,但您可以覆盖它。
将订单放在单独的集合中需要您单独为用户加载它们。虽然这是一个请求,但它会在查询方式方面为您提供更大的灵活性。
当然,这两种情况的创建/更新操作也是不同的。
我的建议是,您首先要仔细设计您的应用程序 - 您需要哪些数据,将在哪里展示它,如何创建/更新它。它会给你一个更好的主意,并且关系数据库很可能是你需要的更好的选择(尽管绝对没有必要)。
【讨论】: