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

MongoDB에서 특정 날짜 이후(당일 포함)의 레코드 조회하는 방법

MongoDB에서 특정 날짜와 같거나 그 이후의 레코드를 조회하려면 $gte(greater than equal, 크거나 같음) 연산자를 사용하면 됩니다. 이 연산자는 지정한 값과 일치하는 항목은 물론, 그보다 큰 모든 값을 조건에 포함하기 때문에 날짜 범위 검색에 매우 유용합니다.

먼저 실습용 컬렉션을 만들고 문서를 삽입해 보겠습니다.

1. 컬렉션 생성 및 문서 삽입

> db.demo91.insertOne({"ArrivalDate":new ISODate("2020-01-10")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2d49fd79799acab037af66")
}
> db.demo91.insertOne({"ArrivalDate":new ISODate("2019-12-14")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2d4a0679799acab037af67")
}

위 예제에서는 demo91이라는 컬렉션에 도착 날짜(ArrivalDate)가 서로 다른 두 개의 문서를 삽입했습니다.

2. find() 메서드로 전체 문서 확인

컬렉션에 저장된 모든 문서는 find() 메서드를 사용해 확인할 수 있습니다.

> db.demo91.find();

이 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e2d49fd79799acab037af66"), "ArrivalDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e2d4a0679799acab037af67"), "ArrivalDate" : ISODate("2019-12-14T00:00:00Z") }

3. $gte 연산자로 특정 날짜 이후 레코드 조회

이제 MongoDB에서 특정 날짜와 같거나 그 이후인 레코드를 찾는 쿼리를 살펴보겠습니다.

> db.demo91.find({ArrivalDate: { $gte: ISODate('2020-01-10') } });

이 쿼리는 ArrivalDate 필드의 값이 2020년 1월 10일과 같거나 그 이후인 문서만 반환합니다. 실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e2d49fd79799acab037af66"), "ArrivalDate" : ISODate("2020-01-10T00:00:00Z") }

결과를 보면 2020년 1월 10일에 해당하는 문서만 조회되었고, 그 이전 날짜인 2019년 12월 14일의 문서는 제외된 것을 확인할 수 있습니다.

참고 사항

반대로 특정 날짜보다 이전인 레코드를 찾으려면 $lte(작거나 같음) 또는 $lt(미만) 연산자를 사용하면 됩니다. 또한 두 조건을 조합하면 특정 기간 사이의 데이터를 조회할 수도 있습니다.

> db.demo91.find({ ArrivalDate: { $gte: ISODate('2019-12-01'), $lte: ISODate('2020-01-31') } });

이처럼 $gte 연산자는 날짜 기반 필터링에서 가장 기본적이면서도 자주 활용되는 도구이므로, 정확한 사용법을 익혀두면 실무에서 큰 도움이 됩니다.