Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays mongoDB-易趣风格类别_Arrays_Json_Mongodb_Categories - Fatal编程技术网

Arrays 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"}] }] }

我想知道您如何在mongoDB中存储类别和子类别列表,以便人们销售商品

我本来打算这样做的,但是我想起来它是行不通的

这就是原因

{"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信息吗?这里有一些常见的模式示例。