본문 바로가기
T./MongoDB

MongoDB Certifications Tips

by IT Journeyman 2025. 2. 19.

TL;DR

MongoDB Certifications에 대한 내용입니다.

시험 요령만 궁금하신 분은 교육 과정과 시험 안내를 패쓰하시고, 마지막 5. Exam Success Tips만 보시면 됩니다. 

IT Journeyman

연말과 설날 전후로 어찌어찌하여 MongoDB Certification 8개를 모두 하게 되었습니다. 시험이 좋아서 찾아서 보는 사람은 세상에 없을 것입니다. 어쩔 수 없이 준비하시고 있는 분들이 있다면, 도움이 될까 경험을 정리하여 공유 드립니다. 

1. ​​MongoDB Certification Program 

https://learn.mongodb.com/pages/certification-program

위 무료 교육과정 중 원하시는 과정에 등록을 위해 MongoDB University 회원가입을 하고 등록을 합니다.

(시험을 보신다면 여권이름과 같은 이름으로 MongoDB University에 가입하셔야 합니다).

 

4 과목으로 보이지만, Developer는 Java, Node, Python, PHP, C# 5개 과정으로 나누어져 있어서 총 8과목입니다. 해당 무료 교육을 이수하면 밑에 나오는 것처럼 $150인 시험 응시를 위한 50% 할인 쿠폰이 가입한 메일로 옵니다.

(20250219 기준으로 향후 정책은 변경될 수 있습니다, 가끔 MongoDB Korea에서 나머지 50% 시험비용을 합격자에게 돌려 주는 이벤트를 하기도 하는데 2025년에는 아직 모르겠습니다. https://events.mongodb.com/2024mongodbcerti)

    • Associate Developer Exam(Java, Node, Python, PHP, C#)
    • Associate Data Modeler Exam
    • Associate Atlas Administrator Exam
    • Associate Database Administrator Exam

 

2. ​​Purchase Exam 

원하시는 교육을 선택하면 아래처럼 무료 교육을 들으실 수 있습니다. 아니 꼭 듣기를 권장 드립니다. 교육 내용도 나쁘지 않고 영어 자막도 나오니 크게 어렵지 않습니다. 저는 주로 2배속으로 들었습니다. 무료 교육을 이수하면 밑에 나오는 것처럼 $150인 시험 응시를 위한 50% 할인 쿠폰이 메일로 옵니다. 그 다음 맨 아래 Purchase Exam 버튼을 클릭하시고 시험을 예약하시면 됩니다. 

 

3. ​​Practice Questions(모의고사)

교육을 다 듣고 시험 예약까지 하셨다면 아래 링크의 모의고사를 봅니다, 반드시 모의고사를 보셔야 합니다. 그리고 80점 이상 어렵겠다 생각되시면, 시험을 연기하시고 더 공부하시면 됩니다.

(합격은 70점대인 듯 하지만 정확한 내용은 공개되어 있지 않음. 떨어지면 2주인가 일정 기간 재응시가 불가합니다. 물론 돈도 또 내야 합니다. 특정 기한까지 패스하셔야 한다면, 신중하게 시험 일정을 잡으셔야 합니다. 물론 다른 과목을 보시거나, 다른 아이디로 University 계정 만들고, 교육 다시 듣고, 다시 돈 내고, 다시 시험 보셔도 됩니다) 

https://learn.mongodb.com/courses/associate-database-administrator-practice-questions

4. Preparation guidelines​

우선 아래처럼 하시길 권장 드립니다.

  1. 교육 과정을 듣는다. 특히 연습문제에 집중하셔야 합니다.
    •   Associate DBA Exam Study Guide를 꼭 보시고 각 단원별 출제 비중을 확인합니다.
        (아래 첨부한 시험 성적표에서 보시듯이 출제 비중이 낮은 단원은 0%이나 50%이어도 합격합니다)
    •   틀린문제 체크하고 해당 내용 다시 확인해야 합니다.
    •   MongoDB가 중급 이상인 분은 실습을 Skip하실 수 있습니다.
  2. Practice Questions(모의고사)는 두 세 번 풀어서 100점이 될 때까지 반복해야 합니다.
  3. 연습문제와 모의고사를 확실히 하셨다면, 아래 Tips을 보시고 응시하시기 바랍니다.
  4. Udemy같은 Dump는 굳이 필요 없습니다.
    •   교육과정과 매뉴얼 그리고 실습도 쉬운데 굳이 Dump를 이용해야 하나 하는 생각입니다. 
  5. 실습이 어려우시면, Gen. AI에게 물어봐도 됩니다.
  6. 답이 없는 시험 문제가 한 두 개 있습니다.
    •   지문이 반복되거나 답이 없거나 여러 개인 경우도 있지만, 크게 신경쓰지 말고 적당히 찍고 넘어가시면 됩니다.
    •   한 두 문제 때문에 시간 쓰시지 마시기 바랍니다. 대세에 지장 없습니다.
  7. 시간은 충분합니다, 시간이 부족하시다면 준비가 부족하신 겁니다. 

기타 주의 사항

  • examity로 원격 시험을 보시게 되는데 노트북이나 PC 카메라가 있어야 하고, 주위 사람이 없는 조용한 공간에서 응시해야 합니다.
  • 여권이름(혹은 영문 이름이 나온 신분증)과 같은 이름으로 등록이 되지 있지 않다면, 시험감독관에게 영어로 설명하시는 것에 꽤 애를 먹으실 수 있습니다.(저는 회사 계정이 영어이름으로 되어 있어 여권이름과 달라 8번 시험 볼 때마다 실랑이를 했습니다, 시험 준비를 하면서 유일하게 짜증났던 부분입니다. 화내지 마시고 다음에 이름 꼬옥 고치겠다고 공손히 간청하면, 시험 볼 수 있게 해 줍니다.)

 

 

5. Exam Success Tips

  1. Overview - MongoDB의 BSON 데이터 타입, 이건 걍 외웁시다
    •   Double,String,Object,ObjectId,Boolean,Date,32-bit integer,64-bit integer,Decimal  등등
  2. CRUD - 모든 데이터를 조회하지만 _id는 제외, db.products.find({}, { _id: 0 });
    •   {}: 모든 데이터를 가져오겠다는 의미.
    •   { _id: 0 }: _id 필드를 제외하고 나머지를 출력.
  3. CRUD - find에서 검색 조건을 ","로 나열하면 AND 조건으로 동작
    •   아래 두 문장은 같은 결과를 리턴
      •   db.users.find({ $and: [ { age: 25 }, { city: "Seoul" } ] });
      •   db.users.find({ age: 25, city: "Seoul" });
  4. CRUD - $elemMatch를 사용할 때, 배열 내 요소 중 하나의 조건만 만족해도 결과를 반환
  5. CRUD - 배열의 "Tennis"를 검색할 때, "Table Tennis"는 조건을 불만족
  6. CRUD - 배열(items) 내 필드가 없는 경우, 해당 문서가 쿼리 결과에 포함되는가?
    •   아니요, 배열 내에 필드가 없는 요소만 존재하는 경우, 해당 문서는 결과에 포함되지 않습니다.
  7. CRUD - Aggregation을 사용하여 전체 문서 개수를 세는 방법
    •   db.collection.aggregate([ { $count: "totalCount" } ])
  8. CRUD - find()를 사용하여 전체 문서 개수를 세는 방법
    •   db.collection.countDocuments({});
  9. CRUD -MongoDB에서 특정 날짜 데이터를 저장하려면 JavaScript의 Date 객체를 사용해야 합니다.
    •   db.events.insertOne({
          eventName: "Christmas",
          eventDate: new Date("2023-12-25T00:00:00Z") // 특정 날짜와 시간 (UTC 기준)
      });
  10. CRUD - MongoDB에서 aggregate([])의 의미
    •   위 코드를 실행하면 모든 문서를 반환합니다. 즉, 아래 find()와 같은 결과를 얻습니다.
    •   db.mycollection.find({});
  11. CRUD - MongoDB의 findAndModify() 메서드
    •   기본적으로 findAndModify()는 기존 문서를 반환하지만, new: true를 설정하면 업데이트된 문서를 반환
  12. CRUD - updateOne에서 $upsert아닙니다, "$" 없습니다.
    •   db.cakeFlavors.updateOne(
          { flavor: "strawberry" },   // 조건: flavor가 "strawberry"인 문서를 찾음
          { $set: { number: 100 } },  // 업데이트 내용
          { upsert: true }            // 문서가 없으면 새로 삽입
      );
  13. CRUD - findAndModify()는 기존 문서가 있는 경우, 업데이트된 문서 반환
  14. CRUD - findOneAndDelete()의 동작 방식
    •   지정된 조건과 일치하는 첫 번째 문서를 찾아 삭제.
    •   삭제된 문서를 반환.
  15. CRUD - findOneAndReplace() 특징
    •   조건을 만족하는 "첫 번째" 문서만 교체 (여러 개가 있어도 한 개만 변경됨).
    •   원래 문서를 반환하지만, returnNewDocument: true 옵션을 설정하면 교체된 문서를 반환
  16. CRUD - findOneAndUpdate()는 조건을 만족하는 "첫 번째" 문서만 업데이트
    •   sort 옵션을 사용하면 가장 적합한 문서를 선택하여 업데이트 가능
    •   이전 문서를 반환하지만, returnNewDocument: true를 설정하면 업데이트된 문서 반환
  17. CRUD - findOneAndDelete() 특징
    •   조건을 만족하는 "첫 번째" 문서를 삭제.
    •   삭제된 문서를 반환 (원래 저장된 전체 필드를 포함).
  18. Indexes - 현재 컬렉션에 생성된 인덱스를 확인할 때 사용하는 메서드
    •   db.collection.getIndexes();
  19. Indexes - 조건에 맞는 인덱스가 { item : 1, qty : -1 }이라면,
    •   그 대칭인 인덱스  { item : -1, qty : 1 }도 답이다
  20. Indexes - 쿼리에 가장 효율적인 인덱스가 {a : 1, "b.a" : -1 }라면, {a : 1, b : -1 }도 답이다
  21. Modeling -"환자의 최근 상태" 와 "최근 처방전"은 임베드하는 것이 효율적
  22. Modeling - Manager 다큐먼트를 레퍼런스하는 것이 효율적
  23. Drivers - SCRAM-SHA-256을 권장
  24. Drivers - MongoClient 인스턴스는 하나만 생성하는 것이 권장됨
  25. Drivers - MongoDB Connection Pool 설정, 또 외워야지요
    •   maxPoolSize, minPoolSize 등등
  26. ETC - 아래 서치 설정은 외웁시다.
    {
      "mappings": {
        "dynamic": false,
        "fields": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "price": {
            "type": "number"
          }
        }
      }
    }
  27. ETC - dynamic: true
    {
      "mappings": {
        "dynamic": true
      }
    }
  28. ETC - fuzzy
    db.yourCollection.aggregate([
      {
        $search: {
          index: 'default',  // Atlas Search 인덱스 이름
          autocomplete: {
            query: "mong",  // 자동완성을 수행할 키워드 시작 부분
            path: "text",   // 검색할 필드 지정
            fuzzy: {        // 오타 허용 설정
              maxEdits: 2   // 최대 2자의 수정 허용 (오타 보정 기능)
            }
          }
        }
      }
    ])