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

MongoDB URL 레코드에서 특정 도메인 이름 검색하기 (/i 옵션 활용법)

MongoDB에서 URL 레코드에 저장된 특정 도메인 이름을 대소문자 구분 없이 검색하려면 정규식 옵션 /i를 사용하면 됩니다. 이 옵션은 영문 대소문자를 구분하지 않고 일치 여부를 판단해 주기 때문에, "EXAMPLE.com"과 "example.com"처럼 표기가 서로 다른 URL도 단 한 번의 쿼리로 모두 찾아낼 수 있습니다.


1. 샘플 데이터 준비하기

먼저 데모용 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

> db.demo219.insertOne({"details":{"WebsiteURL":"www.EXAMPLE.com"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e667203d395bdc2134718")
}
> db.demo219.insertOne({"details":{"WebsiteURL":"www.gmail.com"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e667803d395bdc2134719")
}
> db.demo219.insertOne({"details":{"WebsiteURL":"www.example.com"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e667f03d395bdc213471a")
}

2. 전체 문서 확인하기

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

> db.demo219.find();

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

{ "_id" : ObjectId("5e3e667203d395bdc2134718"), "details" : { "WebsiteURL" : "www.EXAMPLE.com" } }
{ "_id" : ObjectId("5e3e667803d395bdc2134719"), "details" : { "WebsiteURL" : "www.gmail.com" } }
{ "_id" : ObjectId("5e3e667f03d395bdc213471a"), "details" : { "WebsiteURL" : "www.example.com" } }

3. 특정 도메인 이름 검색하기

이제 /i 옵션이 적용된 정규식을 활용해 특정 도메인 이름을 검색하는 쿼리를 살펴보겠습니다.

> db.demo219.find({"details.WebsiteURL": /example/i});

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

{ "_id" : ObjectId("5e3e667203d395bdc2134718"), "details" : { "WebsiteURL" : "www.EXAMPLE.com" } }
{ "_id" : ObjectId("5e3e667f03d395bdc213471a"), "details" : { "WebsiteURL" : "www.example.com" } }

결과 분석

출력 결과를 보면 "www.EXAMPLE.com"(대문자)과 "www.example.com"(소문자) 두 문서가 모두 반환된 것을 확인할 수 있습니다. 반면 "www.gmail.com"은 검색 조건에 해당하지 않으므로 자동으로 제외되었습니다. 이처럼 /i 플래그를 사용하면 대소문자와 관계없이 원하는 도메인 이름이 포함된 모든 레코드를 손쉽게 조회할 수 있어, 실무에서 URL 기반 데이터를 다룰 때 매우 유용합니다.