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

MongoDB에서 필드가 반환하는 문자 수를 제한하는 방법

MongoDB에서 필드의 반환 문자 수 제한하기

MongoDB에서 특정 필드로부터 반환되는 문자 수를 제한하려면 $substr 연산자를 사용하면 됩니다. 이 연산자는 지정한 시작 위치부터 원하는 길이만큼의 부분 문자열만 추출해 반환합니다.

1. 샘플 컬렉션 생성 및 문서 삽입

먼저 demo233 컬렉션을 만들고 문서를 삽입해 보겠습니다.

> db.demo233.insertOne({"Paragraph":"My Name is John Smith.I am learning MongoDB database"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e41877df4cebbeaebec5146")
}
> db.demo233.insertOne({"Paragraph":"David Miller is a good student and learning Spring and Hibernate Framework."});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4187d7f4cebbeaebec5147")
}

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

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

> db.demo233.find().pretty();

위 쿼리는 다음과 같은 결과를 출력합니다.

{
   "_id" : ObjectId("5e41877df4cebbeaebec5146"),
   "Paragraph" : "My Name is John Smith.I am learning MongoDB database"
}
{
   "_id" : ObjectId("5e4187d7f4cebbeaebec5147"),
   "Paragraph" : "David Miller is a good student and learning Spring and Hibernate Framework."
}

3. $substr로 반환 문자 수 제한하기

다음은 aggregate() 메서드의 $project 단계와 $substr 연산자를 조합하여 Paragraph 필드에서 처음 10자만 반환하는 쿼리입니다.

> db.demo233.aggregate(
...   [
...      {
...         $project:
...         {
...            Paragraph: { $substr: [ "$Paragraph", 0, 10] }
...
...      }
...} ] )

$substr 배열의 첫 번째 인자는 대상 필드, 두 번째 인자는 시작 위치(0부터), 세 번째 인자는 반환할 최대 문자 수를 의미합니다. 여기서는 10을 지정했으므로 앞의 10자만 잘려서 반환됩니다.

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

{ "_id" : ObjectId("5e41877df4cebbeaebec5146"), "Paragraph" : "My Name is" }
{ "_id" : ObjectId("5e4187d7f4cebbeaebec5147"), "Paragraph" : "David Mill" }

참고: 최신 버전에서는 $substrBytes 또는 $substrCP 사용 권장

$substr은 현재 더 이상 권장되지 않는(deprecated) 연산자입니다. MongoDB 최신 버전에서는 바이트 단위로 문자열을 자르는 $substrBytes, 코드 포인트(문자) 단위로 자르는 $substrCP를 사용하는 것이 좋습니다. 특히 한글처럼 멀티바이트 문자가 포함된 데이터를 다룰 때는 $substrCP를 사용해야 문자가 깨지지 않고 안전하게 잘립니다.