Mongodb怎么解决N+1查询的问题
发布于 5 年前 作者 MidiGeek 2939 次浏览 来自 问答

如题,例如场景是有2张表,车辆表和用户表,车辆表中有一个字段是用户表的id,当我查询出一个车辆表的数组时需要查找出车辆表对应的用户并且聚合到车辆表然后返回给前端。 目前想到的方案有2个: 1、facebook开源的dataloader 2、手动的遍历出车辆表中的用户id,进行一次查询出结果,再对应的循环聚合到车辆表结果中。 各位大佬还有其他办法吗

5 回复

聚合管道可以解决:


db.order.aggregate([
    {
      $lookup:
        {
          from: "order_item",
          localField: "order_id",
          foreignField: "order_id",
          as: "items"
        }
   }
])

Mongodb+Mongoose教程第10讲你看看: https://pan.baidu.com/s/1Dva3FBLYILWSPubHy8kOFA

populate

来自酷炫的 CNodeMD

mongodb 这种nosql 设计思想就是适当的数据冗余换取更快的读写速度 , 或许换一种存储方式? 或者可以 $lookup , @peasonlee 答案中有官方文档地址

如果不是特别老的版本感觉就lookup populate 如果老到lookup都没有感觉应该升级数据库了

回到顶部