1

我是 MongoDB 的新手,从传统的 SQL 关系方法开始。我正在研究一个简单的“类别有很多产品”场景(c#.Net)。类别有

List<Product>

我的问题是。

  1. 问题 1:在添加产品屏幕上,我有一个类别下拉菜单。所以在提交时,我应该先在产品集合中插入产品,然后 将此产品 送到类别集合的嵌套产品中。

    _categoryCollection.Update(id, Update< Category>.Push…)

  2. 问题2:或者我们不应该只拥有所谓的“产品集合”。相反,我们应该只有一个包含嵌套产品的类别集合。并在提交时将这个新产品推送到相应的类别中。

    问题2.1:如果我们想在添加产品后对产品与类别进行关联怎么办??

  3. 或问题 3:考虑问题一。我们应该在 Product 实体中有 CategoryId 吗?这在 No SQL 概念中是否有意义?
4

2 回答 2

0

我一直发现这篇 MongoDB 文章是解决此类问题的好资源。

http://docs.mongodb.org/ecosystem/use-cases/product-catalog/

您需要问的问题是,如何访问数据?我的对象是什么,它们是如何形成的?首先从你的编程开始,创建你的类(域对象)和你的访问模式,然后担心 Mongo。你会看到,Mongo 不会真的妨碍你。这就是它的本意。

所以,回到你的场景。如果您知道类别的数量会很大,需要经常严格控制和操作,那么您可以为它们创建第二个集合,并在产品文档的类别字段中引用该集合的 _id 字段。重要的是,类别的值本身应与每个产品文档一起存储,以便由于少查询或需要连接数据而快速读取。

斯科特

于 2015-04-15T04:15:42.660 回答
0

这里可以考虑几点:

If a category has many products but a product cannot belong to more than one category, then
    If number of products is not expected to be very large per category, then
        Nest products inside category document
    Else, use a different collection for products and use field 'categoryId' in them
Else, use use a different collection for products and use field 'categoryId' in them

只有当它们有一个明确的父级并且它们不是很大或太多时才嵌套文档。否则,父文档将变得巨大而无法控制其大小。

于 2015-04-15T05:21:49.503 回答