我必须以这样一种方式设计模式:我可以存储用户ID和他们的订单,该ID可以是面包,黄油等多种产品,另外我还想存储订购的产品数量,请进行指导。< / p>
答案 0 :(得分:0)
很难为您提供真正的解决方案,因为设计NoSQL DB结构取决于您要如何访问数据。您可以将订单保留为用户模型中的嵌套/嵌入文档,也可以将它们存储在单独的集合中。在第一种情况下,您将在一个请求中拥有所有数据,但是您将无法查询和接收符合某些条件的订单,因为您将获得包括符合条件的所有订单。然后您需要将它们过滤掉。或者,您可以使用聚合来获取所需的信息。 但是,要记住一个限制。 MongoDB文档具有size limitation - 16 megabytes。由于用户可能有很多订单,因此可以肯定地达到某些用户的文档大小限制。聚合也有一个限制-Pipeline stages have a limit of 100 megabytes of RAMe,但是您可以覆盖它。
将订单存放在单独的集合中将需要您分别为用户加载订单。虽然这是一个额外的请求,但是它将在查询方式方面为您提供更大的灵活性。
然后,当然,两种情况下的创建/更新操作也都不同。
我的建议是,您首先要认真设计应用程序-所需的数据以及在何处显示它,如何创建/更新它。它将为您提供一个更好的主意,并且关系数据库将是满足您需要的更好的选择(尽管绝对没有必要)。