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

JavaScript에서 날짜를 증가시켜 MongoDB 문서를 업데이트하는 방법

날짜를 증가시키려면 자바스크립트의 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의 업데이트 연산자를 함께 사용하면 마감일 관리 등 다양한 날짜 기반 작업을 효율적으로 처리할 수 있습니다.