Arrays mongoDB-易趣风格类别
我想知道您如何在mongoDB中存储类别和子类别列表,以便人们销售商品 我本来打算这样做的,但是我想起来它是行不通的 这就是原因Arrays mongoDB-易趣风格类别,arrays,json,mongodb,categories,Arrays,Json,Mongodb,Categories,我想知道您如何在mongoDB中存储类别和子类别列表,以便人们销售商品 我本来打算这样做的,但是我想起来它是行不通的 这就是原因 {"category":"Fashion", "Sub-Categories": [{ "subcat_name":"Female Clothing", "Sub-categories":[{"subcat-name":"Dresses"},{"subcat-name":"Shirts"},{"subcat-name":"Business"}] }] }
{"category":"Fashion",
"Sub-Categories":
[{
"subcat_name":"Female Clothing",
"Sub-categories":[{"subcat-name":"Dresses"},{"subcat-name":"Shirts"},{"subcat-name":"Business"}]
}]
}
正如您所看到的,有两个级别的子类别,这意味着更新可能会变得混乱
有人能告诉我在mongoDB中创建分类列表的最佳方法吗,如易趣和gumtree我建议您将数组设置为链接列表,您必须为父分类设置一列 “父类别”列指向(显然)父类别的索引,我想你明白我的意思了 现在可以使用递归检索此信息 这是您的示例数组
index name parent
1 fashion
2 female clothing 1
3 dresses 2
3 shirts 2
因此,您可以创建一个结构简单的动态类别。定义集合(即描述存在哪些类别和子类别的集合)的结构应如下所示:
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.categories{
_id:,
姓名:,
子类别:[
{
子类别代码:,
姓名:,
}
],
}
以及您的物品:
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>
}
db.items{
_身份证:
姓名:
类别:{
类别ID:,
类别名称:,
子类别ID:,
子类别名称:,
},
}
在所有常见用例中运行此模式,您会发现您很少需要为单个常见操作查询两个集合。数据复制是有意的,需要管理(这意味着如果更新类别名称,则必须批量更新特定类别中的项目)。如果出于性能或实用性的原因,您无法接受这些名称,那么您只能在应用程序中存储名称并维护应用程序本地id->name缓存,以便于在不查询数据库的情况下进行类别查找
有问题吗?评论对不起,你能给出一个简单的示例吗?我不熟悉mongoDB的语法,但我希望这个想法能给你带来一个小问题,那就是子类别ID,我如何使它们成为一个ID,就像_ID,你可以简单地生成一个ObjectId,但任何ID都可以工作,因为它只需要在主类别中是唯一的。甚至可能是子类别名称字符串的转义小写版本。您阅读了有关的wiki信息吗?这里有一些常见的模式示例。