MongoDB의 날짜 비교

Tahseen Tauseef 2023년10월8일
  1. MongoDB에서 날짜 범위 사용
  2. MongoDB에서 $gt 사용
  3. MongoDB에서 $gte 사용
  4. MongoDB에서 $lt 사용
  5. MongoDB에서 $lte 사용
  6. MongoDB에서 두 날짜 사이의 문서 찾기
  7. MongoDB에서 특정 날짜 이후의 문서 찾기
  8. MongoDB에서 특정 날짜 이전의 문서 찾기
  9. MongoDB의 날짜 기준 비교
MongoDB의 날짜 비교

날짜를 기반으로 쿼리를 반환하는 문제는 이 MongoDB 지침 문서에서 설명합니다. 또한 MongoDB에서 날짜 범위를 사용하여 쿼리하는 방법도 잘 설명되어 있습니다.

MongoDB에서 날짜 범위 사용

타임스탬프 또는 날짜 범위를 기반으로 레코드를 가져오는 MongoDB 날짜 범위 쿼리를 작성하는 방법을 배웁니다. 예를 들어 시간 또는 날짜보다 크거나 작은 MongoDB 날짜는 날짜 쿼리의 예입니다.

MongoDB에서 날짜 범위로 쿼리를 실행하려면 다음 기본 구문을 사용합니다.

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

이 쿼리는 "일" 필드가 2020-01-21보다 크거나 같고 2020-01-24보다 작거나 같은 컬렉션의 모든 레코드를 반환합니다.

MongoDB에서 $gt 사용

통사론:

{ field: { $gt: value } }

field의 값이 제공된 value보다 큽니다(예: >). 따라서 $gt는 해당 문서를 선택합니다. 비교 연산자는 BSON 유형이 대부분의 데이터 유형에 대한 쿼리 값 유형과 일치하는 경우에만 필드에 대한 비교를 실행합니다.

MongoDB의 Type Bracketing은 제한된 BSON 간 비교를 허용합니다. 다음 예에서는 inventory 컬렉션을 사용합니다.

db.inventory.insertMany( [
   {
      "item": "nuts", "quantity": 31,
      "carrier": { "name": "import", "fee": 3 }
   },
   {
      "item": "screws", "quantity": 50,
      "carrier": { "name": "import", "fee": 4 }
   },
   {
      "item": "washers", "quantity": 11,
      "carrier": { "name": "import", "fee": 1 }
   }
] )

수량20보다 큰 재고 컬렉션에서 모든 문서를 선택합니다.

db.inventory.find( { quantity: { $gt: 20 } } )

출력:

MongoDB에서 $gt 사용

다음 예제는 포함된 문서의 필드에 대한 $gt 비교를 기반으로 price 필드를 설정합니다.

db.inventory.updateOne(
   { "carrier.fee": { $gt: 2 } }, { $set: { "price": 9.99 } }
)

출력:

포함된 문서 필드 기반 업데이트 수행

updateOne() 메서드는 fee 하위 필드가 있는 carrier라는 내장 문서를 찾습니다. 첫 번째 문서는 수수료가 2보다 큰 값을 갖는 위치를 발견합니다. “가격: 9.99"로 설정합니다.

updateMany()를 사용하여 carrier.fee가 2보다 큰 모든 문서에서 price 필드 값을 변경하십시오.

MongoDB에서 $gte 사용

통사론:

{ field: { $gte: value } }

$gtefield 값이 제공된 값(예: value)보다 크거나 같은(즉 >=) 문서를 선택합니다. 다음 예시에서는 ‘inventory’ 컬렉션을 사용합니다.

db.inventory.insertMany( [
   {
      "item": "nuts", "quantity": 31,
      "carrier": { "name": "import", "fee": 3 }
   },
   {
      "item": "bolts", "quantity": 51,
      "carrier": { "name": "import", "fee": 4 }
   },
   {
      "item": "washers", "quantity": 11,
      "carrier": { "name": "import", "fee": 1 }
   }
] )

수량이 20 이상인 재고 컬렉션의 모든 문서를 선택해야 합니다.

db.inventory.find( { quantity: { $gte: 20 } } )

출력:

MongoDB에서 $gte 사용

price 필드는 포함된 문서의 필드에 대한 $gte 비교를 사용하여 다음 예제에서 설정됩니다.

db.inventory.updateMany(
   { "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)

출력:

$gte를 사용하여 포함된 문서 필드 기반 업데이트 수행

MongoDB에서 $lt 사용

통사론:

{ field: { $lt: value } }

$ltfield 값이 제공된 value 보다 작은 문서를 선택합니다. 다음 예에서는 이전 inventory 컬렉션을 사용합니다.

수량20 미만인 재고 컬렉션에서 모든 문서를 선택합니다.

db.inventory.find( { quantity: { $lt: 20 } } )

출력:

MongoDB에서 $lt 사용

다음 예제는 포함된 문서의 필드에 대한 $lt 비교를 기반으로 price 필드를 설정합니다.

db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )

출력:

$lt를 사용하여 포함된 문서 필드 기반 업데이트 수행

MongoDB에서 $lte 사용

통사론:

{ field: { $lte: value } }

$ltefield 값이 제공된 value.보다 작거나 같은(즉 =) 문서를 선택합니다. 다음 예에서는 이전 inventory 컬렉션을 사용합니다.

다음 예를 고려하십시오.

db.inventory.find( { quantity: { $lte: 20 } } )

이 쿼리는 수량 필드 값이 20.보다 작거나 같은 재고 컬렉션의 모든 항목을 반환합니다.

출력:

MongoDB에서 $lte 사용

price 필드는 포함된 문서의 필드에 대한 $lte 비교를 사용하여 다음 예제에서 설정됩니다.

db.inventory.updateMany(
   { "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)

출력:

$lte를 사용하여 포함된 문서 필드 기반 업데이트 수행

아래 정보는 다음 문서를 사용하여 이 구문을 데이터 세트에 적용하는 방법을 보여줍니다.

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

MongoDB에서 두 날짜 사이의 문서 찾기

다음 쿼리를 사용하여 두 날짜 사이에 "일" 필드가 있는 모든 문서를 검색합니다.

질문:

db.data.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 }

MongoDB에서 특정 날짜 이후의 문서 찾기

"일" 필드가 특정 날짜 이후 날짜로 설정된 모든 문서를 찾으려면 다음 쿼리를 사용하십시오.

질문:

db.data.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 }

MongoDB에서 특정 날짜 이전의 문서 찾기

다음 쿼리를 사용하여 "day" 필드가 지정된 날짜 이전으로 설정된 모든 문서를 찾습니다.

질문:

db.data.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 }

MongoDB의 날짜 기준 비교

MongoDB를 사용하여 날짜를 기반으로 쿼리를 반환해 보겠습니다. 먼저 개념을 더 이해하기 위해 문서를 사용하여 '데이터'라는 컬렉션을 만듭니다.

질문:

db.data.insertOne({"PassengerName":"John","PassengerAge":23,"PassengerArrivalTime":new ISODate("2018-03-10 14:45:56")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a57be9064dcd4a68b70e4")
}
db.data.insertOne({"PassengerName":"Larry","PassengerAge":21,"PassengerArrivalTime":new ISODate("2018-05-19 11:10:23")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e5")
}
db.data.insertOne({"PassengerName":"Mike","PassengerAge":24,"PassengerArrivalTime":new ISODate("2018-08-25 16:40:12")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e6")
}
db.data.insertOne({"PassengerName":"Carol","PassengerAge":26,"PassengerArrivalTime":new ISODate("2019-01-29 09:45:10")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e7")
}

find() 기능을 사용하여 컬렉션의 모든 문서를 표시합니다.

질문:

db.data queryFromDate.find().pretty();

출력:

컬렉션의 모든 문서를 반환하려면 find() 함수 사용

다음은 날짜 기반 반환 쿼리입니다. 생성 날짜가 2018-05-19T11:10:23Z 이후인 레코드가 반환됩니다.

질문:

> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();

출력:

날짜 기반 쿼리를 사용하여 컬렉션의 문서 반환

이 기사를 통해 Date() 메소드 사용에 대해 배웠습니다. 예제는 $gte$lte 명령과 데이터를 기반으로 하는 반환 쿼리를 간략하게 설명했습니다.

관련 문장 - MongoDB Date