이 장에서는 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 쿼리 조건에 대한 자세한 설명은 후속 장을 참조하십시오.