날짜를 증가시키려면 자바스크립트의 setDate()와 getDate() 메서드를 활용하면 됩니다. 이 두 메서드를 조합하면 특정 일수만큼 날짜를 손쉽게 더할 수 있으며, 그 결과를 MongoDB 업데이트 쿼리에 적용할 수 있습니다.
1. 컬렉션 및 문서 생성
먼저 예제에 사용할 컬렉션을 만들고 문서를 하나 삽입해 보겠습니다.
> db.demo168.insertOne({"DueDate":null});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3695ae9e4f06af551997d6")
}2. 문서 조회하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.
> db.demo168.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e3695ae9e4f06af551997d6"), "DueDate" : null }3. 날짜 증가 후 MongoDB 업데이트
이제 자바스크립트로 날짜를 증가시키고, 그 값을 이용해 MongoDB 문서를 업데이트하는 쿼리를 살펴보겠습니다. getDate()로 현재 일자를 가져온 뒤 원하는 일수를 더하고, setDate()로 다시 설정하는 방식입니다.
> var t = new Date();
> t.setDate(t.getDate()+1);
1580722089017
>
> var dat = new Date();
> dat.setDate(dat.getDate()+2);
1580808489085
>
> db.demo168.update(
... { "_id": ObjectId("5e3695ae9e4f06af551997d6") },
... {
... "$currentDate": { "DueDate": true },
... "$set": {
... "DueDate1": t,
... "DueDate2": dat
... }
... }
... )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })위 쿼리에서는 $currentDate> 연산자로 DueDate 필드를 현재 시각으로 설정하고, $set 연산자를 통해 하루 뒤 날짜(t)와 이틀 뒤 날짜(dat)를 각각 새로운 필드에 저장했습니다.
4. 업데이트 결과 확인
업데이트가 완료된 후 다시 find() 메서드로 문서를 조회해 보겠습니다.
> db.demo168.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e3695ae9e4f06af551997d6"), "DueDate" : ISODate("2020-02-02T09:28:09.308Z"), "DueDate1" : ISODate("2020-02-03T09:28:09.017Z"), "DueDate2" : ISODate("2020-02-04T09:28:09.085Z") }출력 결과를 보면 DueDate는 현재 날짜로, DueDate1은 하루가 증가된 날짜로, DueDate2는 이틀이 증가된 날짜로 정상적으로 업데이트된 것을 확인할 수 있습니다. 이처럼 자바스크립트의 날짜 메서드와 MongoDB의 업데이트 연산자를 함께 사용하면 마감일 관리 등 다양한 날짜 기반 작업을 효율적으로 처리할 수 있습니다.