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

MongoDB에서 특정 문자열이 포함된 문서를 찾는 방법 ($regex 활용)

특정 문자열이 포함된 문서를 찾으려면 find() 메서드와 함께 $regex 연산자를 사용하면 됩니다. 먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

> db.demo597.insertOne({"Name":"John Doe"});{
    "acknowledged" : true, "insertedId" : ObjectId("5e947ae3f5f1e70e134e2690")
}
> db.demo597.insertOne({"Name":"John Smith"});{
    "acknowledged" : true, "insertedId" : ObjectId("5e947ae8f5f1e70e134e2691")
}
> db.demo597.insertOne({"Name":"Chris Brown"});{
    "acknowledged" : true, "insertedId" : ObjectId("5e947aeff5f1e70e134e2692")
}
> db.demo597.insertOne({"Name":"Adam Smith"});{
    "acknowledged" : true, "insertedId" : ObjectId("5e947afff5f1e70e134e2693")
}

컬렉션의 전체 문서 확인하기

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

> db.demo597.find();

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e947ae3f5f1e70e134e2690"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e947ae8f5f1e70e134e2691"), "Name" : "John Smith" }
{ "_id" : ObjectId("5e947aeff5f1e70e134e2692"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5e947afff5f1e70e134e2693"), "Name" : "Adam Smith" }

$regex로 특정 문자열이 포함된 문서 검색하기

다음은 Name 필드에서 특정 문자열("smith")이 포함된 MongoDB 문서를 찾는 쿼리입니다.

> db.demo597.find({Name:{$regex:/smith/i}} );

쿼리를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

{ "_id" : ObjectId("5e947ae8f5f1e70e134e2691"), "Name" : "John Smith" }
{ "_id" : ObjectId("5e947afff5f1e70e134e2693"), "Name" : "Adam Smith" }

쿼리 설명

여기서 사용한 정규 표현식 /smith/i에서 마지막의 i 플래그는 대소문자를 구분하지 않고 검색하겠다는 의미입니다. 따라서 "John Smith"와 "Adam Smith"처럼 "Smith" 또는 "smith"가 포함된 모든 문서가 결과로 반환됩니다. 만약 대소문자를 엄격하게 구분해야 한다면 i 플래그를 제거하고 /smith/처럼 작성하면 됩니다.