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에서 손쉽게 문자열 데이터를 정제할 수 있습니다.