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 연산자는 날짜 기반 필터링에서 가장 기본적이면서도 자주 활용되는 도구이므로, 정확한 사용법을 익혀두면 실무에서 큰 도움이 됩니다.