$max
정의
$max
$max
연산자는 지정된 값이 필드의 현재 값 보다 큰 경우$max
필드 값을 지정된 값으로 업데이트합니다. 연산자는 BSON 비교 순서를 사용하여 서로 다른 유형의 값을 비교할 수 있습니다.$max
연산자 표현식의 형식은 다음과 같습니다.{ $max: { <field1>: <value1>, ... } } 포함된 문서나 배열에
<field>
기호를 지정하려면 점 표기법을사용하십시오.
행동
MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.
필드가 존재하지 않으면 $max
연산자가 필드를 지정된 값으로 설정합니다.
MongoDB 5.0부터 빈 피연산자 표현식( { }
)과 함께 $max
과 같은 업데이트 연산자를 사용할 때 mongod
에서 더 이상 오류가 발생하지 않습니다. 업데이트가 비어 있으면 변경 사항이 없으며 oplog 항목이 생성되지 않습니다(즉, 작업이 작동하지 않음을 의미합니다).
예제
를 $max
사용하여 숫자 비교
scores
컬렉션을 생성합니다.
{ _id: 1, highScore: 800, lowScore: 200 }
문서의 highScore
는 현재 800입니다. 다음 작업은 다음을 수행합니다.
highScore
(800)를 지정된 값(950)과 비교합니다.950이 800보다 크므로
highScore
를 950으로 업데이트합니다.
db.scores.update( { _id: 1 }, { $max: { highScore: 950 } } )
이제 scores
컬렉션에 다음과 같이 수정된 문서가 포함되어 있습니다.
{ _id: 1, highScore: 950, lowScore: 200 }
highScore
의 값인 950이 870보다 크므로 다음 작업은 효과가 없습니다.
db.scores.updateOne( { _id: 1 }, { $max: { highScore: 870 } } )
문서가 scores
컬렉션에서 변경되지 않은 상태로 유지됩니다.
{ _id: 1, highScore: 950, lowScore: 200 }
를 $max
사용하여 날짜 비교
tags
컬렉션을 생성합니다.
db.tags.insertOne( { _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") } )
다음 작업은 dateExpired
필드의 현재 값인 ISODate("2013-10-01T16:38:16.163Z")
를 지정된 날짜 new Date("2013-09-30")
와 비교하여 필드 업데이트 여부를 결정합니다.
db.tags.updateOne( { _id: 1 }, { $max: { dateExpired: new Date("2013-09-30") } } )
new Date("2013-09-30")
최신 날짜가 아니므로 작업은 dateExpired
필드를 업데이트하지 않습니다.
{ _id: 1, desc: "decorative arts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") }