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

MongoDB에서 특정 문자열이 포함된 문서를 찾는 방법 – find()와 정규식 활용

MongoDB에서 특정 문자열로 문서 찾기

MongoDB에서 특정 문자열이 포함된 문서를 검색하려면 find() 메서드를 사용하고, 검색 조건에 정규식(regex)을 적용하면 됩니다. 먼저 예제에 사용할 컬렉션과 문서를 생성해 보겠습니다.

> db.demo409.insertOne({"Name":"John Doe"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e70e4e515dc524f7022767c")
}
> db.demo409.insertOne({"Name":"Chris Brown"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e70e4ec15dc524f7022767d")
}
> db.demo409.insertOne({"Name":"Robert Doe"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e70e4f415dc524f7022767e")
}
> db.demo409.insertOne({"Name":"David Brown"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e70e4fe15dc524f7022767f")
}

컬렉션의 모든 문서 확인하기

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

> db.demo409.find();

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

{ "_id" : ObjectId("5e70e4e515dc524f7022767c"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e70e4ec15dc524f7022767d"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5e70e4f415dc524f7022767e"), "Name" : "Robert Doe" }
{ "_id" : ObjectId("5e70e4fe15dc524f7022767f"), "Name" : "David Brown" }

정규식으로 특정 문자열 검색하기

다음은 /Doe/라는 정규식을 사용해 Name 필드에 "Doe"라는 문자열이 포함된 문서만 조회하는 쿼리입니다.

> db.demo409.find({Name: /Doe/});

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e70e4e515dc524f7022767c"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e70e4f415dc524f7022767e"), "Name" : "Robert Doe" }

결과를 보면 이름에 "Doe"가 포함된 John Doe와 Robert Doe 문서만 반환된 것을 확인할 수 있습니다. 이처럼 슬래시(/) 사이에 검색할 문자열을 넣으면 해당 패턴이 포함된 모든 문서를 손쉽게 찾을 수 있습니다.

추가 팁: 대소문자 구분 없이 검색하기

정규식 뒤에 i 옵션을 붙이면 대소문자를 구분하지 않고 검색할 수 있습니다.

> db.demo409.find({Name: /doe/i});

또한 $regex 연산자를 사용해도 동일한 결과를 얻을 수 있으며, 복잡한 패턴 매칭 조건을 더 명확하게 표현할 때 유용합니다.

> db.demo409.find({Name: { $regex: "Doe" }});