zoukankan      html  css  js  c++  java
  • mongoDB如何处理多对多关系

     

    问题描述:
    例如在关系数据库中有一个Team表,一个User表,两者是多对多的关系,即一个Team可以有多个User,一个User也可能属于多个Team,请问这样的关系在MongoDB中如何存储? 
    如果是一对多,我知道可以用嵌套,但不知道如何处理多对多的关系,请指教。【来自山贼】
     
    问题解答:
     
    如何处理好多对多的关系可谓是NoSQL的精髓所在。理论上,可以在一个集合中完成存储,不过实际上这样的情况非常罕见。这是由于查询的多样性所导致的,若是只有一种类型的查询,则这种多对多的关系放在一个良好设计的集合中,虽然会有大量的冗余,但是效率一定是最高的。如何设计这种数据库的关键就是看你有多少种查询,每一种的频率是多少,使用的其他要求是什么样的。对于不同的查询,同样的数据库设计的性能也是大不一样。还有一点,一般不要拆成三个集合,这是传统的关系型数据库的思维方式。都NoSQL了一定要换个角度思考问题。常见的情况就是拆成两个集合,然后有一部分冗余,对最常用的查询做一个索引。这个还得多多实践。【Mars】
     
    1、Team 里面存一个 teammates: [] 存 User 的 _id 或其它索引值,这样就知道一个 team 有哪些 user 
    2、User 可以反查 Team 的 find({teammates: _id}),这样就知道一个 user 在哪些 team【理想】
     
    与关系数据库类似,分开两个文档存储, 
    然后其中一个文档的ID列表存在另一个文档中【jarod】
  • 相关阅读:
    LVS的持久连接、会话保持和高可用介绍
    lvs整理
    ubuntu 12.04 下LVS的一些搭建心得和资料整理
    Ubuntu下配置LVS【h】
    关于vector push_back()与其他方式读取数据的效率对比(转)
    强大的vim配置文件,让编程更随意(转)
    E492: Not an editor command: ^M
    Building Vim from source(转)
    误删 libc.so.6的解决方法(转)
    CentOS安装glibc-2.14(转)
  • 原文地址:https://www.cnblogs.com/zengda/p/4540670.html
Copyright © 2011-2022 走看看