0

我想知道您将如何在 mongoDB 中存储类别和子类别的列表,以供人们出售物品。

这就是我打算这样做的方式,但是当我想到它时,它不会起作用。

这就是为什么

{"category":"Fashion",
"Sub-Categories":
[{
   "subcat_name":"Female Clothing",
    "Sub-categories":[{"subcat-name":"Dresses"},{"subcat-name":"Shirts"},{"subcat-name":"Business"}]
}]
}

如您所见,有两个级别的子类别,这意味着更新可能会令人困惑。

有人能告诉我在 mongoDB 中做类别列表的最佳方法,比如 ebay 和 gumtree

4

2 回答 2

0

我建议你让你的数组像一个链表,你必须有一个父类别的列。

父类别列指向(显然)父类别的索引,我想你明白我的意思。

现在您可以使用递归检索此信息

这是你的样本数组

index    name               parent
  1      fashion   
  2      female clothing      1
  3      dresses              2
  3      shirts               2

所以通过这个你可以创建一个结构简单的动态类别

于 2012-06-20T08:04:24.240 回答
0

定义集合(因此,描述存在哪些类别和子类别的集合)的结构应如下所示:

db.categories {
_id: <Category ID, unique code or ObjectId>,
name : <Human readable category name>,
subCategories : [
    {
        subCategoryCode : <Sub category ID, local unique code>,
        name : <Human readable sub category name>,
        <additional sub category data>
    }
],
<additional category data>
}

还有你的物品:

db.items {

_id : <Item id>
name : <Human readable item name>
category : {
    categoryId : <Category ID>,
    categoryName : <Human readable category name>,
    subCategoryId : <Sub category ID>,
    subCategoryName : <Human readable sub category name>,
},
<additional item data>
}

在所有常见用例中运行此模式,您会发现您很少需要查询两个集合以进行单个常见操作。数据重复是故意的,需要进行管理(这意味着如果您更新类别名称,则必须批量更新某个类别中的项目)。如果您出于性能或实用性原因无法忍受,您只能存储名称并在应用程序中维护应用程序本地 id->name 缓存,以便在不查询数据库的情况下进行类别查找。

问题?评论

于 2012-06-20T08:12:18.627 回答