MongoDB에서는 find() 메서드를 사용하여 기존 컬렉션에 저장된 문서를 손쉽게 조회할 수 있습니다. 이 글에서는 MongoDB 셸에서의 기본 사용법과 함께 Java 프로그램으로 전체 문서를 검색하는 방법까지 단계별로 살펴보겠습니다.
find() 메서드 기본 문법
db.coll.find()
각 구성 요소의 의미는 다음과 같습니다.
db: 현재 사용 중인 데이터베이스를 나타냅니다.
coll: 문서를 조회하려는 컬렉션의 이름입니다.
MongoDB 셸에서의 예제
다음과 같은 문서들이 저장된 students 컬렉션이 있다고 가정해 보겠습니다.
{name:"Ram", age:26, city:"Mumbai"}
{name:"Roja", age:28, city:"Hyderabad"}
{name:"Ramani", age:35, city:"Delhi"}아래 쿼리를 실행하면 해당 컬렉션의 모든 문서를 조회할 수 있습니다.
> use myDatabase()
switched to db myDatabase()
> db.createCollection(sample)
{ "ok" : 1 }
> db.sample.find()
{ "_id" : ObjectId("5e870492af638d501865015f"), "name" : "Ram", "age" : 26, "city" : "Mumbai" }
{ "_id" : ObjectId("5e870492af638d5018650160"), "name" : "Roja", "age" : 28, "city" : "Hyderabad" }
{ "_id" : ObjectId("5e870492af638d5018650161"), "name" : "Ramani", "age" : 35, "city" : "Delhi" }
>Java 프로그램으로 전체 문서 조회하기
Java에서는 com.mongodb.client.MongoCollection 인터페이스가 제공하는 find() 메서드를 사용하여 현재 컬렉션의 모든 문서를 조회할 수 있습니다. 이 메서드는 컬렉션 내 모든 문서를 담고 있는 반복 가능한(iterable) 객체를 반환합니다.
Java 프로그램으로 MongoDB의 문서를 조회하려면 다음 단계를 따르세요.
시스템에 MongoDB가 설치되어 있는지 확인합니다.
Java 프로젝트의 pom.xml 파일에 아래 의존성을 추가합니다.
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.2</version>
</dependency>이후 다음 순서대로 코드를 작성합니다.
MongoClient 클래스를 인스턴스화하여 MongoDB 클라이언트를 생성합니다.
getDatabase() 메서드를 호출하여 데이터베이스에 연결합니다.
getCollection() 메서드를 사용하여 문서를 조회할 대상 컬렉션 객체를 가져옵니다.
find() 메서드를 호출하여 해당 컬렉션의 모든 문서를 포함하는 반복 가능한 객체를 얻습니다.
Java 예제 코드
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.Iterator;
import org.bson.Document;
import com.mongodb.MongoClient;
public class RetrievingAllDocuments {
public static void main( String args[] ) {
// MongoDB 클라이언트 생성
MongoClient mongo = new MongoClient( "localhost" , 27017 );
// 데이터베이스 연결
MongoDatabase database = mongo.getDatabase("myDatabase");
// 컬렉션 객체 생성
MongoCollection<Document> collection = database.getCollection("students");
// 문서 조회
FindIterable<Document> iterDoc = collection.find();
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}실행 결과
위 코드를 실행하면 students 컬렉션에 저장된 모든 문서가 콘솔에 출력됩니다.
Document{{_id=5e86db7012e9ad337c3aaef5, name=Ram, age=26, city=Hyderabad}}
Document{{_id=5e86db7012e9ad337c3aaef6, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e86db7012e9ad337c3aaef7, name=Rahim, age=30, city=Delhi}}정리
MongoDB 셸과 Java 드라이버 모두 find() 메서드 하나만으로 컬렉션의 전체 문서를 간단히 조회할 수 있습니다. Java에서는 반환된 FindIterable 객체를 Iterator로 순회하며 각 문서를 처리하면 되므로, 조건 없는 전체 조회부터 필터링 조회까지 다양하게 확장하여 활용할 수 있습니다.