MongoDB에서 컬렉션에 저장된 데이터 중 특정 조건에 맞는 도큐먼트만 조회하고 싶다면 find() 메서드를 활용하면 됩니다. 이 글에서는 샘플 컬렉션을 만들고, 전체 데이터를 확인한 뒤, 특정 도시에 해당하는 레코드만 검색하는 과정을 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성하기
먼저 insertOne() 메서드를 사용해 demo30이라는 컬렉션에 도시 정보가 담긴 도큐먼트들을 삽입합니다. 여기서는 'New York', 'Los Angeles', 'Chicago' 세 도시를 사용하며, 'Los Angeles'는 두 번 저장되어 중복 데이터 상황도 함께 테스트합니다.
> db.demo30.insertOne({"City":"New York"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174ceccfb11e5c34d898bd")
}
> db.demo30.insertOne({"City":"Los Angeles"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174d0ecfb11e5c34d898be")
}
> db.demo30.insertOne({"City":"Chicago"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174d18cfb11e5c34d898bf")
}
> db.demo30.insertOne({"City":"Los Angeles"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e174d1dcfb11e5c34d898c0")
}2. 전체 도큐먼트 조회하기
조건 없이 find() 메서드를 호출하면 컬렉션에 저장된 모든 도큐먼트를 확인할 수 있습니다.
> db.demo30.find();
위 명령을 실행하면 다음과 같이 네 개의 도큐먼트가 출력됩니다.
{ "_id" : ObjectId("5e174ceccfb11e5c34d898bd"), "City" : "New York" }
{ "_id" : ObjectId("5e174d0ecfb11e5c34d898be"), "City" : "Los Angeles" }
{ "_id" : ObjectId("5e174d18cfb11e5c34d898bf"), "City" : "Chicago" }
{ "_id" : ObjectId("5e174d1dcfb11e5c34d898c0"), "City" : "Los Angeles" }3. 특정 도시만 검색하는 쿼리
특정 조건의 도큐먼트만 가져오려면 find() 메서드에 조건 객체를 인자로 전달하면 됩니다. 예를 들어 City 필드 값이 'Chicago'인 레코드만 조회하려면 아래와 같이 작성합니다.
> db.demo30.find({"City":"Chicago"});실행 결과, 조건과 일치하는 도큐먼트 하나만 반환됩니다.
{ "_id" : ObjectId("5e174d18cfb11e5c34d898bf"), "City" : "Chicago" }핵심 정리
find()를 인자 없이 호출하면 컬렉션의 모든 도큐먼트가 조회됩니다.find({"필드명": "값"})형태로 조건을 지정하면 일치하는 도큐먼트만 반환됩니다.- 조건에 해당하는 문서가 여러 개라면 모두 함께 출력됩니다. 예를 들어
{"City":"Los Angeles"}로 조회하면 두 개의 결과가 나옵니다.
이처럼 MongoDB의 find() 메서드는 간단한 조건 객체만으로도 원하는 데이터를 손쉽게 필터링할 수 있는 강력한 조회 도구입니다.