搜尋

首頁  >  問答  >  主體

mongoose - mongodb連表查詢

mongo如何連表查詢,例如有一個users 還有一個blogs 輸出 blogs內容和作者資訊

淡淡烟草味淡淡烟草味2794 天前839

全部回覆(4)我來回復

  • 黄舟

    黄舟2017-04-27 09:04:18

    mongodb不支持关系数据库的join(連接)查詢

    回覆
    0
  • 習慣沉默

    習慣沉默2017-04-27 09:04:18

    eg:

    db.users.insert({name:'tmac',blogid:1});
    db.blog.insert({id:1,detail:'tmacs blog'});
    

    users有一個屬性blogid 與 blogs 的 id 是 一對一的話:

    db.users.find().forEach(function(x){
    var blogs_record = db.blogs.findOne({id:x.blogid});
    if(blogs_record != null){
    db.temp.insert({name:x.name,detail:blogs_record.detail});
    }
    )
    

    eg:

    db.users.insert({name:'tmac',blogid:1});
    db.blog.insert({id:1,detail:'tmacs blog1'});
    db.blog.insert({id:1,detail:'tmacs blog2'});
    

    users有一個屬性blogid 與 blogs 的 id 是 一對n的話:

    db.users.find().forEach(function(x){
    db.blogs.findOne({id:x.blogid}).forEach(function(y){
    db.temp.insert({name:x.name,y.detail});
    })
    )

    回覆
    0
  • 漂亮男人

    漂亮男人2017-04-27 09:04:18

    blogs可以直接嵌入作者的信息,作為blogs的子文檔。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-04-27 09:04:18

    mongoose提供了populate方法來實現join。不過我也是沒看懂~
    http://www.nodeclass.com/api/mongoose.html#guide_populate

    一個比較簡單但是覺得笨拙的方法就是 像上面的答案一樣,先查一張表,然後對結果forEach再查詢另一張表。

    回覆
    0
  • 取消回覆