• 회원가입
  • 로그인
  • 구글아이디로 로그인

[mongodb] Node.js - MongoDB Join (콜렉션 결합)

2,171  

목차

  1. 2개 collection 존재 가정
  2. collection 결합

 

※ MongoDB는 관계형 DB 아니지만, $lookup 스테이지 활용해 조인 가능.

 

2개 collection 존재 가정

hz_member 컬렉션.

 

[

  { _id: 1, mb_name: 'AAA', level_id: 1},

  { _id: 2, mb_name: 'BBB', level_id: 2},

  { _id: 3, mb_name: 'CCC', level_id: 3}

]

 


hz_level 컬렉션.

 

[

  { _id: 1, lv_name: '손님' },

  { _id: 2, lv_name: '회원' },

  { _id: 3, lv_name: '관리자' }

]

 

※ 컬렉션 생성 : https://homzzang.com/b/njs-26

※ 데이터 입력 : https://homzzang.com/b/njs-27

 

collection 결합

1. C:\User\사용자명\hz.js 생성.

 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true};


MongoClient.connect(url, options, function(err, db) { 

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection('hz_member').aggregate([

    { $lookup:

       {

         from: 'hz_level',

         localField: 'level_id',

         foreignField: '_id',

         as: 'level_info'

       }

     }

    ]).toArray(function(err, res) {

    if (err) throw err;

    console.log(JSON.stringify(res));

    db.close();

  });

}); 

 


2. CMD 모드 창에서, 아래 명령어 실행.

 

C:\User\사용자명>node hz.js

 


[결과값]

 

[

  {"_id":1,"mb_name":"AAA","level_id":1,"level_info":[{"_id":1,"lv_name":"손님"}]},

  {"_id":2,"mb_name":"BBB","level_id":2,"level_info":[{"_id":2,"lv_name":"회원"}]},

  {"_id":3,"mb_name":"CCC","level_id":3,"level_info":[{"_id":3,"lv_name":"관리자"}]}

 



분류 제목
mongodb Node.js - MongoDB 설치・연결
mongodb Node.js - MongoDB Create Database (DB 생성)
mongodb Node.js - MongoDB Create Collection (콜렉션 생성)
mongodb Node.js - MongoDB Insert (데이터 입력)
mongodb Node.js - MongoDB Find (데이터 찾기)
mongodb Node.js - MongoDB Query (검색 쿼리)
mongodb Node.js - MongoDB Sort (데이터 정렬)
mongodb Node.js - MongoDB Delete (데이터 삭제)
mongodb Node.js - MongoDB Drop Collection (콜렉션 삭제)
mongodb Node.js - MongoDB Update (데이터 수정)
mongodb Node.js - MongoDB Limit (데이터 출력개수)
mongodb Node.js - MongoDB Join (콜렉션 결합)
목록
찾아주셔서 감사합니다. Since 2012