Query Documents

이 페이지에서는 db.collection.find() 메서드를 사용해서 mongo shell상에서 쿼리동작의 예를 보겠습니다.

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" }
]);

Select All Documents in a Collection

collection에 존재하는 모든 document를 선택하기 위해서는 쿼리의 필터 파라메터에 빈 객체를 전달하면 됩니다. 필터에 정의한 조건을 기반으로 특정 데이터를 추출하게 됩니다.

db.inventory.find( {} )

이는 다음 SQL문과 동일합니다.

SELECT * FROM inventory

Specify Equality Condition

필터에 특정 조건을 {키:값} 의 형태로 추가하면 됩니다.

db.inventory.find( { status: "D" } )

이는 다음 SQL문과 동일합니다.

SELECT * FROM inventory WHERE status = "D"

Specify Conditions Using Query Operators

쿼리의 필터에 쿼리 연산자를 추가해 더 구체적인 핉터를 작성할수 있습니다.

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

이는 다음 SQL문과 동일합니다.

SELECT * FROM inventory WHERE status in ("A", "D")

Specify AND Conditions

복합적인 쿼리를 통해 특정 조건으로 collection의 document에 하나 이상의 필드를 대상으로 질의를 할수가 있습니다. 즉, 논리적인 AND 접속사를 통해 쿼리의 모든 조건에 만족하는 document를 collection으로부토 얻어낼수가 있습니다.

db.inventory.find( { status: "A", qty: { $lt: 30 } } )

이는 다음 SQL문과 동일합니다.

SELECT * FROM inventory WHERE status = "A" AND qty 
<
 30

Specify OR Conditions

$or 연산자를 사용하면, 각각의 조건을 조합하는 특정 쿼리를 작성해서 여러 조건중에 하나의 조건에라도 일치하는 document를 선택합니다.

db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

이는 다음 SQL문과 동일합니다.

SELECT * FROM inventory WHERE status = "A" OR qty 
<
 30

Specify AND as well as OR Conditions

db.inventory.find( {
     status: "A",
     $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )

이는 다음 SQL문과 동일합니다.

SELECT * FROM inventory WHERE status = "A" AND ( qty 
<
 30 OR item LIKE "p%")

Behavior

Cursor

db.collection.find()메서드는 일치하는 document를 담은 cursor를 리턴합니다.

Read Isolation

New in version 3.2

replica sets이나 replica set shards를 통해 읽기작업을 하는 경우 클라이언트에서 읽기작업의 isolation의 레벨을 정의할수 있습니다.

results matching ""

    No results matching ""