在MongoDB 中实现模拟 join 查询具体方法是?优缺点分别又是什么?

thlvyou提问于 2018-04-09 18:13
1 个回答
  • samuelwong2018-04-10 12:17

    方案一:将需要join的一部分字段作为embed嵌入宿主document。优点是一次查询搞定,性能好;缺点是可能造成数据冗余,同时嵌入的数据很难做到与原数据同步,可能会形成数据不一致现象。


    方案二:通过_id或DBRef进行link。优点是不会造成数据冗余或数据不一致,缺点是需要多次查询才能获得所需要的数据,开销大,特别是在在宿主document较多时开销特别大。


    方案三:使用mongodb的mapreduce进行查询。优点是没有数据冗余或数据不一致问题,同时查询次数少。缺点是mongodb的mapreduce基于javascript引擎(目前是spider monkey),单线程运行,因此效率低,不适合实时查询。