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들을 선택하는 법
SQLdb.inventory.**find( {} )**
SELECT * FROM inventory
- MongoDB
- 특정한 값을 찾는 법(등식 조건 지정)
ex) inventory 컬렉션에서 status가 “D”인 document{ <field1>: <value1>, ... }
//SQL에서는 SELECT * FROM inventory WHERE status = "D"
db.inventory.find( { status: "D" } )
- MongoDB
- 쿼리 연산자를 사용하여 조건 지정
ex) inventory 컬렉션에서 검색{ <field1>: { <operator1>: <value1> }, ... }
- 참고
- $or연산자를 사용해 쿼리 표현 가능하지만 동일한 필드에 대해 동등성 검사를 수행할 때 $in 연산자를 사용한다.
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하는 복합 쿼리를 지정할 수 있다.
SQLdb.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
SELECT * FROM inventory WHERE status = "A" OR qty < 30
- MongoDB
- $or 연산자를 사용하면 쿼리가 컬렉션에서 최소한 하나의 조건과 일치하는 document를 선택하도록 논리적 연결로 각 절을 join하는 복합 쿼리를 지정할 수 있다.
- AND 그리고 OR 조건 지정
SQLdb.inventory.find( { status: "A", $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ] } )
- 참고
- 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 |