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

MongoDB에서 쿼리로 필드의 공백 제거하기 – $trim 연산자 완벽 가이드

MongoDB $trim 연산자란?

MongoDB에서 문자열 필드에 저장된 값의 앞뒤 공백(whitespace)을 제거하려면 $trim 연산자를 사용하면 됩니다. $trim은 집계 파이프라인(aggregation pipeline) 내에서 주로 $project 단계와 함께 활용되며, 데이터 정제(cleansing) 작업에 매우 유용합니다.

실제 예제를 통해 살펴보겠습니다. 먼저 컬렉션을 생성하고 문서를 삽입합니다.

> db.demo217.insertOne({"FullName":"   Chris Brown"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3e5d1e03d395bdc213470f")
}
> db.demo217.insertOne({"FullName":"   David Miller"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3e5d2503d395bdc2134710")
}
> db.demo217.insertOne({"FullName":"   John Doe"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3e5d2b03d395bdc2134711")
}

find() 메서드로 문서 조회하기

이제 find() 메서드를 사용해 컬렉션의 모든 문서를 확인해 보겠습니다.

> db.demo217.find();

위 쿼리는 다음과 같은 결과를 출력합니다. 각 이름 앞에 불필요한 공백이 포함되어 있는 것을 볼 수 있습니다.

{ "_id" : ObjectId("5e3e5d1e03d395bdc213470f"), "FullName" : "   Chris Brown" }
{ "_id" : ObjectId("5e3e5d2503d395bdc2134710"), "FullName" : "   David Miller" }
{ "_id" : ObjectId("5e3e5d2b03d395bdc2134711"), "FullName" : "   John Doe" }

$trim으로 공백 제거하기

다음은 aggregate() 메서드와 $trim 연산자를 조합하여 FullName 필드의 공백을 제거하는 쿼리입니다.

> db.demo217.aggregate([
...     { $project: { Name: { $trim: { input: "$FullName" } } } }
... ])

실행 결과는 다음과 같습니다. 모든 이름에서 앞뒤 공백이 깔끔하게 제거된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e3e5d1e03d395bdc213470f"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5e3e5d2503d395bdc2134710"), "Name" : "David Miller" }
{ "_id" : ObjectId("5e3e5d2b03d395bdc2134711"), "Name" : "John Doe" }

$trim의 추가 옵션: chars

$trim은 기본적으로 공백뿐만 아니라 개행 문자, 탭 등 모든 whitespace를 제거합니다. 만약 특정 문자만 제거하고 싶다면 chars 옵션을 지정할 수 있습니다.

{ $trim: { input: "$FullName", chars: " -" } }

위 예제는 이름 앞뒤의 공백과 하이픈(-)을 함께 제거합니다. 이처럼 $trim을 활용하면 MongoDB에서 손쉽게 문자열 데이터를 정제할 수 있습니다.