Mongodb父母和孩子与其他集合领域相关的标签

时间:2011-09-12 15:50:51

标签: php mongodb object nosql

好吧,我要为一个小网站设置我的mongo db模式,我需要的是将这个模式重现为mongo db集合:

product
        -> tag1
              ->child_tag1
              ->child_tag2
        -> tag2
              ->child_tag1
              ->child_tag2
        -> tag3
              ->child_tag1
              ->child_tag2

这是使用mongo重现此架构的最佳方法吗?

我确实需要能够在不更新所有集合对象的情况下更改标签或子标签:) [EDITED]

原因我知道我的问题不是那么清楚,我需要澄清我正在尝试将mysql数据库网站转换为mongoDb网站。

所以我在mysql中有4个表:

products

id(AUTO) | product_name | qty
 1          biscuits      34
 2          limonade      29

tags

id(AUTO) |  tag_name 
  1            sugar
  2            eggs
  3            vitamine C

tags_childs

id(AUTO) | id_tag | tag_child_name
  1          1        glucouse
  2          2        protein
  3          2        chicken
products_tags

id_product | id_tag | id_tag_child 
  1            1         NULL
  1            1         1
  1            2         3
  2            3        NULL

所以我使用products_tags表连接超过4个表(这就是为什么加热连接我切换到mongoDb :))

所以我可以用mongodb集合和对象重现这个场景吗?

thx :)

1 个答案:

答案 0 :(得分:1)

只是想确保我理解您的上述文件显示的内容;基本上很多产品可以有很多标签,而标签下可以有子标签(编码标签 - > Php是编码的子标签)。

这是我对上述问题的理解,这就是我如何构建你的Mongo Collections:

产品系列:

{
   "ProductName":"Sweet Jelly",
   "Qty":9,
   "Tags":[
     ListOfTagIds
    ]
 }

TagIds列表将是mongoDB自动分配给每个创建的新字段的唯一标识符。see here

从那里我创建了一个标签集合:

{
  "TagName":"Coding Languages";
  "ChildTags":[
      $_idOfChildren
   ]
}

然后,如果你的标签有一个孩子:

{ 
  "TagName":"PHP",
}

对于这个父/子关系,你可以从这个位于此处的优秀mongo资源中了解更多信息:Mongo Book - 从无联接开始。

祝你好运!