MongoDB - Document Query(조회) - (1)
728x90

참고 : https://docs.mongodb.com/manual/tutorial/query-documents/

 

Query Documents

주어지는 예시를 통해서 db.collection.find() method를 mongosh에서 실행할 것이다.

일단 insertMany()를 통해 inventory라는 collection에 document들을 추가한다.

db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
  • Collection에서의 모든 documents들을 선택하는 법
      db.inventory.**find( {} )**
    SQL
  • SELECT * FROM inventory
  • MongoDB
  • 특정한 값을 찾는 법(등식 조건 지정)
      { <field1>: <value1>, ... }
    ex) inventory 컬렉션에서 status가 “D”인 document
      //SQL에서는
      SELECT * FROM inventory WHERE status = "D"
  • db.inventory.find( { status: "D" } )
  • MongoDB
  • 쿼리 연산자를 사용하여 조건 지정
      { <field1>: { <operator1>: <value1> }, ... }
    ex) inventory 컬렉션에서 검색
    • 참고
      • $or연산자를 사용해 쿼리 표현 가능하지만 동일한 필드에 대해 동등성 검사를 수행할 때 $in 연산자를 사용한다.
      SQL
    • SELECT * FROM inventory WHERE status in ("A", "D")
  • db.inventory.find( { status: { $in: [ "A", "D" ] } } )
  • MongoDB
  • AND 조건 지정
    • 복합 쿼리는 컬렉션 document에서 둘 이상의 필드에 대한 조건을 지정할 수 있다. 논리적 AND 연결은 복합 쿼리의 절을 연결하여 쿼리가 컬렉션에서 모든 조건과 일치하는 문서를 선택하도록 한다.
    • ex) inventory 컬렉션에서 status 가 “A”이고 qty는 30 미만인 document검색 → compass쿼리 표시줄에서 작동.
    • $lt → 미만SQL
    • SELECT * FROM inventory WHERE status = "A" AND qty < 30
    • db.inventory.find( { status: "A", qty: { $lt: 30 } } )
  • OR 조건 지정
    • $or 연산자를 사용하면 쿼리가 컬렉션에서 최소한 하나의 조건과 일치하는 document를 선택하도록 논리적 연결로 각 절을 join하는 복합 쿼리를 지정할 수 있다.
      db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
      SQL
    • SELECT * FROM inventory WHERE status = "A" OR qty < 30
    • MongoDB
  • AND 그리고 OR 조건 지정
      db.inventory.find( {
           status: "A",
           $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
      } )
    SQL
    • 참고
      • MongoDB는 $regex 문자열 패턴 일치를 수행하는 정규식 쿼리를 지원한다.
  • SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
  • ex) status : “A” 그리고 qty 30이하 또는 item 중 p문자로 시작하는 것
728x90
반응형

'Database > MongoDB' 카테고리의 다른 글

MongoDB - 배열 쿼리 - (1)  (0) 2021.12.19
MongoDB - Document Query(조회) - (2)  (0) 2021.12.18
MongoDB - Database/Collection/Document생성,제거  (0) 2021.12.18
MongoDB - 데이터 모델링  (0) 2021.12.18
MongoDB 소개, 설치  (0) 2021.12.17