MongoDB의 find() 메서드는 컬렉션(collection) 또는 뷰(view)에서 조건에 맞는 문서(document)를 선택하고, 선택된 문서들에 대한 커서(cursor)를 반환하는 가장 기본적인 조회 명령어입니다.
find() 메서드를 아무런 매개변수 없이 호출하면 해당 컬렉션에 저장된 모든 문서가 반환되며, 각 문서의 모든 필드가 함께 출력됩니다.
예제: 컬렉션 생성 및 데이터 삽입
먼저 insertOne() 메서드를 사용해 demo405라는 컬렉션에 학생 정보 문서를 하나씩 삽입해 보겠습니다.
> db.demo405.insertOne({"StudentInfo":{"Name":"Chris"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e6f9134fac4d418a0178595")
}
> db.demo405.insertOne({"StudentInfo":{"Name":"David"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e6f9138fac4d418a0178596")
}
> db.demo405.insertOne({"StudentInfo":{"Name":"Bob"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e6f913cfac4d418a0178597")
}
> db.demo405.insertOne({"StudentInfo":{"Name":"John"}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e6f9140fac4d418a0178598")
}위 명령이 실행될 때마다 acknowledged 값이 true로 표시되며, 자동으로 생성된 고유한 ObjectId가 insertedId로 반환되는 것을 확인할 수 있습니다.
find() 메서드로 전체 문서 조회하기
이제 find() 메서드를 사용하여 컬렉션의 모든 문서를 화면에 출력해 보겠습니다.
> db.demo405.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e6f9134fac4d418a0178595"), "StudentInfo" : { "Name" : "Chris" } }
{ "_id" : ObjectId("5e6f9138fac4d418a0178596"), "StudentInfo" : { "Name" : "David" } }
{ "_id" : ObjectId("5e6f913cfac4d418a0178597"), "StudentInfo" : { "Name" : "Bob" } }
{ "_id" : ObjectId("5e6f9140fac4d418a0178598"), "StudentInfo" : { "Name" : "John" } }결과에서 볼 수 있듯이, 삽입했던 네 개의 문서가 각각의 _id 값과 StudentInfo 객체 형태로 그대로 반환됩니다.
추가 팁: 쿼리 필터와 프로젝션 활용
find() 메서드는 첫 번째 인자로 쿼리 필터(query filter)를, 두 번째 인자로 프로젝션(projection)을 전달할 수 있습니다. 예를 들어 db.demo405.find({"StudentInfo.Name": "Chris"})처럼 조건을 지정하면 이름이 Chris인 문서만 조회할 수 있고, 프로젝션을 활용하면 반환되는 필드를 원하는 대로 제한할 수 있습니다. 이를 통해 대량의 데이터 중에서 필요한 정보만 효율적으로 가져올 수 있습니다.