이 장에서는 mongo 셸을 통해 MongoDB의 기본 쿼리 구문을 소개합니다. mongo 셸에서는 db.collection.find()
메서드를 사용하여 데이터를 쿼리합니다.
테스트 데이터 준비
인벤토리 컬렉션에 몇 개의 데이터를 삽입합니다.
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" }
]);
모든 문서 쿼리하기
인벤토리 컬렉션의 모든 문서를 쿼리합니다. {}는 비어있는 쿼리 조건을 나타냅니다.
db.inventory.find( {} )
다음의 SQL 문과 유사합니다.
SELECT * FROM inventory
동등 쿼리 조건
구문:
{ field: value, ... }
예제 1:
db.inventory.find( { status: "D" } )
다음의 SQL 문과 유사합니다.
SELECT * FROM inventory WHERE status = "D"
예제 2: 중첩 필드 쿼리: 중첩된 문서의 필드를 연결하는 데 점 (.)을 사용합니다.
db.inventory.find( { "size.uom": "in" } )
다음의 SQL 문과 유사합니다.
SELECT * FROM inventory WHERE size.uom = "in"
참고: MongoDB 문서는 JSON 형식으로 저장되므로 중첩된 필드를 쿼리 조건으로 사용할 수 있습니다.
쿼리 연산자 사용
MongoDB는 다양한 쿼리 연산자를 지원하여 다양한 복잡한 쿼리를 구현할 수 있습니다.
구문:
{ <field1>: { <operator1>: <value1> }, ... }
설명:
- field1: 필드 이름
- operator1: 연산자
- value1: 연산자 매개변수
$in 연산자의 예:
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
다음과 같은 "in" 연산자를 사용한 SQL 쿼리와 유사합니다:
SELECT * FROM inventory WHERE status in ("A", "D")
참고: 연산자에 대한 자세한 내용은 후속 MongoDB 쿼리 세부 사항 섹션을 참조하십시오.
and 조건
SQL과 유사하게, MongoDB도 and 조건을 지원합니다.
예제:
// 여러 조건을 연속해서 입력하고 and를 사용하여 조건을 연결합니다
db.inventory.find( { status: "A", item: "postcard"} )
다음의 SQL 문과 유사합니다.
SELECT * FROM inventory WHERE status = "A" AND item = "postcard"
or 조건
SQL과 유사하게, MongoDB도 $or 연산자를 사용하여 or 조건을 지원합니다.
구문:
{
$or: [
{condition1},
{condition2},
.....
]
}
예제:
db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )
다음의 SQL 문과 유사합니다.
SELECT * FROM inventory WHERE status = "A" OR item = "postcard"
and 및 or 조건 결합
SQL과 유사하게, MongoDB는 and 및 or를 사용하여 복잡한 쿼리 조건을 결합할 수 있습니다.
예제:
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )
여기서 $lt 연산자 및 정규 표현식 일치를 사용합니다.
다음의 SQL 문과 유사합니다.
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 or item like 'p%')
팁: MongoDB 쿼리 조건에 대한 자세한 설명은 후속 장을 참조하십시오.