MongoDB에서 두 날짜 사이의 객체 찾기

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

이 기사에서는 두 날짜 사이의 객체를 찾는 문제에 대해 간략하게 설명합니다. 또한 이러한 목적으로 사용되는 연산자 $gte, $lte, $gt$lt에 대해 간략히 설명합니다.

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의 유형 브라케팅은 제한된 교차 BSON 비교를 허용합니다.

아래 예에서는 재고 컬렉션을 사용합니다. 아래의 모든 예제에서 사용할 샘플 데이터베이스입니다.

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 } } )

출력:

gt 연산자 사용

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

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

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

출력:

gt 연산자 2 사용

updateOne() 함수는 carrier라는 임베드된 문서에서 fee 하위 필드를 확인합니다. 첫 번째 문서는 2보다 큰 수수료 값을 찾아 가격: 9.99로 설정합니다.

carrier.fee가 2보다 클 때 모든 문서에서 price 필드의 값을 조정하려면 updateMany()를 사용하십시오.

MongoDB의 $gte

통사론:

{ field: { $gte: value } }

$gte는 주어진 값(예: value)보다 크거나 같은(즉 >=) field 값이 있는 문서를 선택합니다.

대부분의 데이터 유형에서 비교 연산자는 BSON 유형이 쿼리 값의 유형과 일치하는 경우에만 필드에 대한 비교를 수행합니다. 그러나 MongoDB의 유형 브라케팅은 제한된 교차 BSON 비교를 허용합니다.

문서 필드 일치

재고 컬렉션에서 20보다 크거나 같은 수량이 있는 모든 문서를 선택합니다.

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

출력:

gte 연산자 사용

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

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

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

출력:

gte 연산자 2 사용

updateOne() 함수는 carrier라는 임베드된 문서에서 fee 하위 필드를 확인합니다. 가격: 9.99수수료 값이 2 이상인 경우 각 문서에 추가됩니다.

updateOne()을 사용하여 carrier.fee가 2보다 큰 경우 첫 번째 페이지의 price 필드 값을 설정하십시오.

MongoDB의 $lt

통사론:

{ field: { $lt: value } }

$ltfield 값이 지정된 value보다 작거나 같은 문서를 선택합니다.

대부분의 데이터 유형에서 비교 연산자는 BSON 유형이 쿼리 값의 유형과 일치하는 경우에만 필드에 대한 비교를 수행합니다. 그러나 MongoDB의 유형 브라케팅은 제한된 교차 BSON 비교를 허용합니다.

문서 필드 일치

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

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

출력:

lt 연산자 사용

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

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

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

출력:

lt 연산자 2 사용

updateOne() 함수는 carrier라는 임베드된 문서에서 fee 하위 필드를 확인합니다. 요금 값이 2보다 작으면 각 레코드에 가격: 9.99를 추가합니다.

updateOne()을 사용하여 carrier.fee가 2 미만인 경우 첫 페이지의 price 필드 값을 설정하십시오.

MongoDB의 $lte

통사론:

{ field: { $lte: value } }

$lte필드 값이 지정된 보다 작거나 같은(즉 =) 문서를 선택합니다.

대부분의 데이터 유형에서 비교 연산자는 BSON 유형이 쿼리 값의 유형과 일치하는 경우에만 필드에 대한 비교를 수행합니다. 그러나 MongoDB의 유형 브라케팅은 제한된 교차 BSON 비교를 허용합니다.

문서 필드 일치

다음 예를 고려하십시오.

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

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

출력:

lte 연산자 사용

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

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

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

출력:

lte 연산자 2 사용

updateMany() 함수는 carrier라는 임베디드 문서에서 fee 하위 필드를 찾습니다. 가격: 9.99수수료의 값이 5 이하인 경우 각 문서에 추가됩니다.

carrier.fee가 5보다 작거나 같으면 updateOne()을 사용하여 첫 페이지에서만 price 필드의 값을 변경하십시오.

다음 정보는 함께 제공되는 문서를 사용하여 이 구문을 데이터 수집에 적용하는 방법을 설명합니다.

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에서 두 날짜 사이의 문서 찾기

아래 쿼리를 사용하여 두 날짜 사이에 day 필드가 있는 모든 문서를 찾으십시오.

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에서 특정 날짜 이전의 문서 찾기

아래 쿼리를 사용하여 필드가 특정 날짜 이전으로 설정된 모든 문서를 찾으십시오.

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();

위의 쿼리는 아래 스크린샷과 같이 다음 문서를 반환합니다.

검색어 반환

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

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

이 쿼리는 아래 스크린샷과 같이 다음 문서를 반환합니다.

리턴 쿼리 1

따라서 이 기사의 도움을 통해 사용자는 Date() 메서드 사용에 대한 정보를 얻었습니다. 예제는 $gte$lte 명령을 간략하게 설명합니다.

또한 데이터를 기반으로 한 반환 쿼리도 코드 스니펫으로 설명됩니다.

관련 문장 - MongoDB Date