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

MongoDB에서 문자열의 고유한 첫 단어 추출하는 방법

MongoDB로 문자열에서 고유한 첫 단어 얻기

문자열에서 중복 없는(distinct) 첫 번째 단어를 추출하려면 JavaScript의 split() 메서드를 활용하면 됩니다. MongoDB의 distinct() 함수와 map()을 조합하면 손쉽게 원하는 결과를 얻을 수 있습니다.

먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

> db.demo129.insertOne({"Words":"This is the MySQL","CountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e305d6368e7f832db1a7f6b")
}
> db.demo129.insertOne({"Words":"MongoDB is NOSQL database","CountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e305d7b68e7f832db1a7f6c")
}

컬렉션의 모든 문서 조회하기

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

> db.demo129.find();

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

{ "_id" : ObjectId("5e305d6368e7f832db1a7f6b"), "Words" : "This is the MySQL", "CountryName" : "US" }
{ "_id" : ObjectId("5e305d7b68e7f832db1a7f6c"), "Words" : "MongoDB is NOSQL database", "CountryName" : "US" }

고유한 첫 단어를 추출하는 쿼리

이제 distinct()로 조건에 맞는 문서의 값을 가져온 뒤, map()split(" ")[0]을 이용해 각 문자열의 첫 번째 단어만 추출합니다.

> w = db.demo129.distinct("Words", {"CountryName" : "US"}).map(function(doc){ return doc.split(" ")[0]; });
[ "This", "MongoDB" ]

결과 출력하기

추출된 결과는 printjson()을 사용하여 보기 좋게 출력할 수 있습니다.

> printjson(w);

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

[ "This", "MongoDB" ]

정리

이처럼 MongoDB에서는 distinct()로 고유한 문자열 값을 먼저 걸러낸 후, split()[0]으로 첫 단어만 잘라내면 됩니다. 두 문서의 첫 단어인 "This"와 "MongoDB"가 각각 한 번씩만 반환되는 것을 확인할 수 있습니다. 이 방식은 문서 필드에 저장된 텍스트 데이터에서 키워드나 접두어를 분석할 때 유용하게 활용됩니다.