Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 특정 단어로 문서 검색하기 – find()와 정규식 활용법

MongoDB에서 특정 단어가 포함된 문서를 찾으려면 find() 메서드를 사용하고, 검색어를 정규식 형태인 /word/i처럼 지정하면 됩니다. 여기서 끝에 붙는 i 플래그는 대소문자를 구분하지 않고 검색하겠다는 의미입니다.

샘플 컬렉션 생성하기

먼저 예제로 사용할 문서들이 담긴 컬렉션을 생성해 보겠습니다.

> db.demo212.insertOne({"details":[{"Name":"John Doe"}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e2c7603d395bdc21346ff")
}
> db.demo212.insertOne({"details":[{"Name":"Chris Brown"}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e2c8003d395bdc2134700")
}
> db.demo212.insertOne({"details":[{"Name":"Robert doe"}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e2c8a03d395bdc2134701")
}

컬렉션의 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo212.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e3e2c7603d395bdc21346ff"), "details" : [ { "Name" : "John Doe" } ] }
{ "_id" : ObjectId("5e3e2c8003d395bdc2134700"), "details" : [ { "Name" : "Chris Brown" } ] }
{ "_id" : ObjectId("5e3e2c8a03d395bdc2134701"), "details" : [ { "Name" : "Robert doe" } ] }

단어로 MongoDB 문서 검색하는 쿼리

이제 "doe"라는 단어가 이름에 포함된 문서를 대소문자 구분 없이 검색하는 쿼리를 살펴보겠습니다.

> db.demo212.find({"details.Name":/doe/i});

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e3e2c7603d395bdc21346ff"), "details" : [ { "Name" : "John Doe" } ] }
{ "_id" : ObjectId("5e3e2c8a03d395bdc2134701"), "details" : [ { "Name" : "Robert doe" } ] }

결과를 보면 "John Doe"와 "Robert doe" 두 문서만 반환되었습니다. 정규식 /doe/i 덕분에 대문자로 된 "Doe"와 소문자로 된 "doe" 모두 매칭되었으며, 해당 단어가 포함되지 않은 "Chris Brown" 문서는 제외된 것을 확인할 수 있습니다.