ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로젝션 연산자
    데이터베이스/MongoDB 2023. 12. 29. 11:12

    배열 필드 프로젝션

    db.inventory2.find({}, {'tags.0': 1})

    tags 필드에 첫 번째 요소(첫 번째 인덱스)가 나타나지 않음

     

    예시 데이터 입력

    db.stock.insertMany([
      {item: 'journal', instock: [ {warehouse: 'A', qty: 5}, {warehouse: 'C', qty: 15} ]},
      {item: 'notebook', instock: [ {warehouse: 'C', qty: 5} ]},
      {item: 'paper', instock: [ {warehouse: 'A', qty: 60}, {warehouse: 'B', qty: 15} ]},
      {item: 'planner', instock: [ {warehouse: 'A', qty: 40}, {warehouse: 'B', qty: 5} ]},
      {item: 'postcard', instock: [ {warehouse: 'B', qty: 15}, {warehouse: 'C', qty: 35} ]},
      {item: 'test', instock: [{0: 'test_data'}]}
    ])
    
    db.stock.find({}, {_id: 0, 'instock.0': 1})

     

    instock.0의 의미는 배열의 첫 번째 요소가 아닌 instock 내부의 오브젝트 중 '0'이라는 필드를 가리키는 것

    > instock 내부에 도큐먼트가 있으면 그저 빈 도큐먼트로 표현됨

    프로젝션에서는 점 연산자가 배열의 요소를 가리키지 않음

    > $slice, $elemMatch, $ 연산자 등을 통해 배열의 요소를 숨기거나 드러내는 방법 사용

     

    하나만 가져오고 싶은 경우 $slice 사용

    db.inventory2.find({}, { tags: {$slice: 1} })

     

    $ 연산자

    $를 사용하는 필드를 쿼리에 사용

    db.inventory2.find({tags: 'red'}, {_id: 0, item: 0, qty: 0})

    tags의 필드 값 중 'red'를 갖는 도큐먼트 찾음

     

    db.inventory2.find({tags: 'red'}, {'tags.$':1})

    $ 연산자를 이용하면 'red' 태그만 표시되게 할 수 있음

    '데이터베이스 > MongoDB' 카테고리의 다른 글

    쿼리 작성 실습  (0) 2023.12.28
    배열 연산자  (0) 2023.12.28
    문자열 연산자  (0) 2023.12.28
    배열 연습 문제  (0) 2023.12.15
    MongoDB 문제 예제 2  (0) 2023.12.14
Designed by Tistory.