账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mongodb对于两张表的关联查询,使用一次聚合查询$lookup,还是使用多次单表查询?
    37
    0

    mongodb联表查询可以使用mongoose的pupulate(),也可以使用聚合$lookup,如果使用两次单表查询:

    //one
    {
       _id: "joe",
       name: "Joe Bookreader"
    }
    //two
    {
       patron_id: "joe",
       street: "123 Fake Street",
       city: "Faketon",
       state: "MA",
       zip: "12345"
    }
    {
       patron_id: "joe",
       street: "1 Some Other Street",
       city: "Boston",
       state: "MA",
       zip: "12345"
    }
    
    db.ones.findOne({_id:'joe'))
    db.twos.find({patron_id:'joe'})

    执行两次单表查询,_id,patron_id都有索引,patron_id对应为joe数量为个位数,索引粒度很低,能过滤很多数据,那么这两次查询是不是也应该很快(都在内存里),这和$lookup查询比起来谁的效率会好一些?聚合$lookup查询是不是内部也是这样做了两次find查询,foreignField对应键上有无索引应该很影响查询效率吧?

    db.ones.aggregate([
        {
          $lookup:
            {
              from: "twos",
              localField: "_id",
              foreignField: "patron_id",
              as: "arrs"
            }
       },
       { $match : {_id:'joe') }
    ])
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部