문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

map (집계)

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 예제
  • 배열의 각 요소에 추가
  • 각 배열 요소 잘라내기
  • 섭씨 온도를 화씨로 변환하기
  • 자세히 알아보기
$map

배열의 각 항목에 표현식 을 적용하고 결과가 적용된 배열을 반환합니다.

다음 환경에서 호스팅되는 배포에 $map 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

$map 표현식의 구문은 다음과 같습니다.

{ $map: { input: <expression>, as: <string>, in: <expression> } }
필드
사양
input
배열로 해석되는 표현식 입니다.
as
선택 사항. input 배열의 각 개별 요소를 나타내는 변수의 이름입니다. 이름을 지정하지 않으면 변수 이름은 기본적으로 this가 됩니다.
in
input 배열의 각 요소에 적용되는 표현식입니다. 이 표현식은 as에 지정된 변수 이름을 사용하여 각 요소를 개별적으로 참조합니다.

표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.

mongosh에서 다음 문서를 사용하여 grades라는 이름의 샘플 컬렉션을 만듭니다.

db.grades.insertMany( [
{ quizzes: [ 5, 6, 7 ] },
{ quizzes: [ ] },
{ quizzes: [ 3, 8, 9 ] }
] )

다음 집계 작업은 $map$add 표현식과 함께 사용하여 quizzes 배열의 각 요소를 2씩 증가시킵니다.

db.grades.aggregate( [
{
$project: {
adjustedGrades: {
$map: {
input: "$quizzes",
as: "grade",
in: { $add: [ "$$grade", 2 ] }
}
}
}
}
] )

이 연산은 다음과 같은 결과를 반환합니다.

[
{
_id: ObjectId("6390b8f7237da390c6869a62"),
adjustedGrades: [ 7, 8, 9 ]
},
{
_id: ObjectId("6390b8f7237da390c6869a63"),
adjustedGrades: []
},
{
_id: ObjectId("6390b8f7237da390c6869a64"),
adjustedGrades: [ 5, 10, 11 ]
}
]

mongosh에서 다음 문서를 사용하여 deliveries라는 이름의 샘플 컬렉션을 만듭니다.

db.deliveries.insertMany( [
{
"city" : "Bakersfield",
"distances" : [ 34.57, 81.96, 44.24 ]
},
{
"city" : "Barstow",
"distances" : [ 73.28, 9.67, 124.36 ]
},
{
"city" : "San Bernadino",
"distances" : [ 16.04, 3.25, 6.82 ]
}
] )

다음 집계 작업은 $map을 사용하여 distances 배열의 각 요소를 정수로 truncate 처리합니다.

db.deliveries.aggregate( [
{
$project: {
city: "$city",
integerValues: {
$map: {
input: "$distances",
as: "decimalValue",
in: { $trunc: "$$decimalValue" }
}
}
}
}
] )

이 연산은 다음과 같은 결과를 반환합니다.

[
{
_id: ObjectId("6390b9b1237da390c6869a65"),
city: 'Bakersfield',
integerValues: [ 34, 81, 44 ]
},
{
_id: ObjectId("6390b9b1237da390c6869a66"),
city: 'Barstow',
integerValues: [ 73, 9, 124 ]
},
{
_id: ObjectId("6390b9b1237da390c6869a67"),
city: 'San Bernadino',
integerValues: [ 16, 3, 6 ]
}
]

mongosh에서 다음 문서를 사용하여 temperatures라는 이름의 샘플 컬렉션을 만듭니다.

db.temperatures.insertMany( [
{
"date" : ISODate("2019-06-23"),
"tempsC" : [ 4, 12, 17 ]
},
{
"date" : ISODate("2019-07-07"),
"tempsC" : [ 14, 24, 11 ]
},
{
"date" : ISODate("2019-10-30"),
"tempsC" : [ 18, 6, 8 ]
}
] )

다음 집계 작업에서는 $addFields 단계를 사용하여 tempsF 문서에 tempsC 배열의 요소에 해당하는 화씨 값을 포함하는 새 필드를 추가합니다. 섭씨에서 화씨로 변환하려면 $map을 사용하여 섭씨 값을 $multiply9/5한 다음 32$add합니다.

db.temperatures.aggregate( [
{
$addFields: {
"tempsF": {
$map: {
input: "$tempsC",
as: "tempInCelsius",
in: {
$add: [ { $multiply: [ "$$tempInCelsius", 9/5 ] }, 32 ]
}
}
}
}
}
] )

이 연산은 다음과 같은 결과를 반환합니다.

[
{
_id: ObjectId("6390ba11237da390c6869a68"),
date: ISODate("2019-06-23T00:00:00.000Z"),
tempsC: [ 4, 12, 17 ],
tempsF: [ 39.2, 53.6, 62.6 ]
},
{
_id: ObjectId("6390ba11237da390c6869a69"),
date: ISODate("2019-07-07T00:00:00.000Z"),
tempsC: [ 14, 24, 11 ],
tempsF: [ 57.2, 75.2, 51.8 ]
},
{
_id: ObjectId("6390ba11237da390c6869a6a"),
date: ISODate("2019-10-30T00:00:00.000Z"),
tempsC: [ 18, 6, 8 ],
tempsF: [ 64.4, 42.8, 46.4 ]
}
]

이전 예제에서 사용된 표현식에 대해 자세히 알아보려면 다음을 참조하세요.

← ltrim(집계)