Mongodb: 날짜 범위로 쿼리하는 방법


다음 기본 구문을 사용하여 MongoDB에서 날짜 범위를 쿼리할 수 있습니다.

 db.collection.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

이 특정 쿼리는 “날짜” 필드가 2020-01-21보다 크고 2020-01-24보다 작은 컬렉션의 모든 문서를 반환합니다.

$gt 는 “보다 큼”을 나타내고 $lt는 “보다 작음”을 나타냅니다.

“크거나 같음”에는 $gte를 , “작거나 같음”에는 $lte를 사용할 수도 있습니다.

다음 예에서는 다음 문서를 사용하여 컬렉션 판매 에 실제로 이 구문을 사용하는 방법을 보여줍니다.

 db.sales.insertOne({day: new Date(" 2020-01-20 "), amount: 40 })
db.sales.insertOne({day: new Date(" 2020-01-21 "), amount: 32 })
db.sales.insertOne({day: new Date(" 2020-01-22 "), amount: 19 })
db.sales.insertOne({day: new Date(" 2020-01-23 "), amount: 29 })
db.sales.insertOne({day: new Date(" 2020-01-24 "), amount: 35 })

예 1: 두 날짜 사이의 문서 검색

다음 코드를 사용하여 “day” 필드가 두 특정 날짜 사이에 있는 모든 문서를 찾을 수 있습니다.

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

이 쿼리는 다음 두 문서를 반환합니다.

 { _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

예시 2: 특정 날짜 이후의 문서 검색

다음 코드를 사용하여 “일” 필드가 특정 날짜 이후인 모든 문서를 찾을 수 있습니다.

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-22 ")
    }
})

이 쿼리는 다음 두 문서를 반환합니다.

 { _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

예시 3: 특정 날짜 이전의 문서 검색

다음 코드를 사용하여 “day” 필드가 특정 날짜 이전인 모든 문서를 찾을 수 있습니다.

 db.sales.find({
    day: {
        $lt : ISODate(" 2020-01-22 ")
    }
})

이 쿼리는 다음 두 문서를 반환합니다.

 { _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

참고 : ISODate() 함수에 대한 전체 문서는 여기에서 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 MongoDB에서 다른 일반적인 쿼리를 수행하는 방법을 설명합니다.

MongoDB: “Like” 정규식을 사용하여 쿼리하는 방법
MongoDB: 필드에 문자열이 포함되어 있는지 확인하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다