본문 바로가기

빅데이터/nosql

mongodb shell에서 서로다른 database의 데이터 비교하기

이전 블로그포스팅에서 getSiblingDB라는 db object를 반환하는 method에 대해서 알아보았다.

 

mongodb에서 db 이름 명시하여 데이터 조회하기

Mongodb를 사용하다보면 use [dbname]을 써서 데이터를 collection단위로 조회하는 경우도 있지만 db이름을 명시하여 데이터조회하고 싶을 때가 있다. 그때는 db.getSibligDB() method를 사용하면 된다. db.getSi..

blog.voidmainvoid.net

상기 method를 사용해서 서로 다른 database의 데이터를 비교하는 구문을 만들어보자

 

요구사항

- students database와 teacher database가 존재

- students에는 list라는 collection이 존재하고 student정보가 들어 있음

- teacher에는 list라는 collection이 존재하고 teacher정보가 들어있음

- 각 collection에 존재하는 lecture이 동일한 값에 대해서 print해보기

각 데이터 예시

db.getSiblingDB('students').list.findOne()

{
    "name": "wonyoung",
    "id" : 10012314,
    "age" : 24,
    "lecture" : "math"
}

db.getSiblingDB('teacher').list.findOne()

{
    "name": "soming",
    "id" : 5001234,
    "age" : 34,
    "lecture" : "math"
}

서로 다른 database에서 value 비교하기

상기 데이터 예시와 같이 존재한다고 했을때, students의 데이터와 teacher의 데이터의 lecture value값이 동일 할 경우 student의 name을 뽑아낸다면 아래와 같이 코드를 짜면 된다.

db.getSiblingDB('students').service.find().forEach(function(obj1){
    db.getSiblingDB('teachers').service.find().forEach(function(obj2){
        if(obj1.lecture == obj2.lecture){
            print(obj1.name)
        }
    });
});

결과물

wonyoung