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

$currentDate

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 예제
$currentDate

$currentDate 연산자는 필드 값을 날짜 또는 타임스탬프 로 현재 날짜로 설정합니다. 기본 유형은 날짜입니다.

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

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

$currentDate 연산자의 형식은 다음과 같습니다.

{ $currentDate: { <field1>: <typeSpecification1>, ... } }

<typeSpecification> 둘 중 하나를 사용하면 됩니다.

  • 부울 true을 설정하여 필드 값을 현재 날짜로 설정하거나, 또는

  • 유형을 명시적으로 지정하는 문서 { $type: "timestamp" } 또는 { $type: "date" }입니다. 연산자는 대소문자를 구분하며 소문자 "timestamp" 또는 소문자 "date"만 사용할 수 있습니다.

포함된 문서나 배열에 <field> 기호를 지정하려면 점 표기법을사용하십시오.

MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.

$currentDate는 지정된 필드를 $currentDate가 실행된 날짜로 설정합니다.

필드가 존재하지 않으면 $currentDate 필드를 문서에 추가합니다.

MongoDB 5.0부터 빈 피연산자 표현식( { } )과 함께 $currentDate과 같은 업데이트 연산자를 사용할 때 mongod에서 더 이상 오류가 발생하지 않습니다. 업데이트가 비어 있으면 변경 사항이 없으며 oplog 항목이 생성되지 않습니다(즉, 작업이 작동하지 않음을 의미합니다).

다음 문서를 사용하여 샘플 collection customers을 만듭니다.

db.customers.insertOne(
{ _id: 1, status: "a", lastModified: ISODate("2013-10-02T01:11:18.965Z") }
)

다음 작업은 lastModified 필드를 현재 날짜로, "cancellation.date" 필드를 현재 타임스탬프로 업데이트하고 status 필드를 "D", "cancellation.reason""user request"로 업데이트합니다.

db.customers.updateOne(
{ _id: 1 },
{
$currentDate: {
lastModified: true,
"cancellation.date": { $type: "timestamp" }
},
$set: {
"cancellation.reason": "user request",
status: "D"
}
}
)

$currentDate는 지정된 필드를 $currentDate가 실행된 날짜로 설정합니다.

업데이트를 확인하기 위하여:

db.customers.find()

업데이트된 문서는 다음과 같습니다:

{
"_id" : 1,
"status" : "D",
"lastModified" : ISODate("2020-01-22T21:21:41.052Z"),
"cancellation" : {
"date" : Timestamp(1579728101, 1),
"reason" : "user request"
}
}

lastModified 필드는 앞서 표시된 업데이트 예시에서 $currentDate가 실행된 날짜로 설정됩니다.

업데이트 메서드는 집계 파이프라인을 사용할 수 있습니다. 구체적으로 설명하면, 이전 예시는 집계 단계 $set 와 집계 변수 NOW(현재 날짜/시간의 경우), CLUSTER_TIME(현재 타임스탬프의 경우)를 사용해 다음과 같이 다시 작성할 수 있습니다.

  • 집계 변수에 액세스하려면 변수 앞에 이중 달러 기호 $$를 붙이고 따옴표로 묶으십시오.

  • CLUSTER_TIME 는 복제본 세트와 샤딩된 클러스터에서만 사용할 수 있습니다.

  • NOWCLUSTER_TIME 값은 파이프라인 전체에서 동일하게 유지됩니다.

db.customers.updateOne(
{ _id: 1 },
[
{ $set: { lastModified: "$$NOW", cancellation: {date: "$$CLUSTER_TIME", reason: "user request"}, status: "D" } }
]
)

작업 후 collection을 쿼리하여 업데이트를 확인할 수 있습니다.

db.customers.find().pretty()

쿼리는 다음 문서를 반환해야 합니다.

{
"_id" : 1,
"status" : "D",
"lastModified" : ISODate("2020-01-22T21:02:18.994Z"),
"cancellation" : {
"date" : Timestamp(1579726934, 2),
"reason" : "user request"
}
}

다음도 참조하세요.

← 필드 업데이트 연산자
$inc →

이 페이지의 내용