Mongodb查询的最佳实践WHERE IN with tags and childs

时间:2011-09-16 11:21:01

标签: mongodb collections tags schema nosql

我正在计划一个集合架构,我想知道如何在标记字段中嵌入数据。

我有一个名为products的产品:

products
       ->_id
       ->product_name
       ->tags

我有一个标签集合:

tags
    ->_id
    ->tag_name

我有一个tags_child集合:

tags_childs
      ->_id
      -> id_tag
      ->tag_child_name

现在我需要将标签和tags_childs保存到产品系列中,所以我认为保存在产品系列中是件好事:

标签:[[_ id_tag]:[_ id_tag_child,_id_tag_child,... etc],[_ id_tag]:[_ id_tag_child,_id_tag_child,... etc]]

但我认为这不是正确的方法,因为我需要能够查询产品集合,按标签和child_tags过滤。

因此,例如我需要通过以下方式过滤产品: + product_name:'roastbeef'  +标签:'热'   +儿童标签:'酱'

或过滤: + product_name:'roastbeef'  +标签:'热'    +儿童吊牌:'酱'     +儿童吊牌:'刀'  +标签:'晚餐'

过滤时始终需要父标记,而子标记是可选的。

如何实现正确的集合以在最后执行此类查询?

1 个答案:

答案 0 :(得分:2)

读完这个;我在这里详细描述了你的模式:

真的没有理由持有这个关键表,因为最后它们都只是标签。您仍然可以通过使用上面建议的架构在数据库中搜索多个标签;并显示所有可用的标签以及它们与上述模式的关系;通过这种方式,它可以清理整个数据库,而不是使用MongoDB不需要的额外表来混淆它。

我强烈建议重新阅读这本电子书,以加强对Mongo赋予你的NoSQL格式的理解。