MongoDB에서 두 날짜 사이의 객체 찾기
- MongoDB에서 날짜 범위로 쿼리
-
MongoDB의
$gt
-
MongoDB의
$gte
-
MongoDB의
$lt
-
MongoDB의
$lte
- MongoDB에서 두 날짜 사이의 문서 찾기
- MongoDB에서 특정 날짜 이후의 문서 찾기
- 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
비교를 기반으로 price
필드를 설정합니다.
db.inventory.updateOne(
{ "carrier.fee": { $gt: 2 } }, { $set: { "price": 9.99 } }
)
출력:
이 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 } } )
출력:
포함된 문서 필드를 기반으로 업데이트 수행
price
필드는 다음 예제에서 포함된 문서의 필드에 대한 $gte
비교를 사용하여 설정됩니다.
db.inventory.updateMany(
{ "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)
출력:
이 updateOne()
함수는 carrier
라는 임베드된 문서에서 fee
하위 필드를 확인합니다. 가격: 9.99
는 수수료
값이 2 이상인 경우 각 문서에 추가됩니다.
updateOne()
을 사용하여 carrier.fee
가 2보다 큰 경우 첫 번째 페이지의 price
필드 값을 설정하십시오.
MongoDB의 $lt
통사론:
{ field: { $lt: value } }
$lt
는 field
값이 지정된 value
보다 작거나 같은 문서를 선택합니다.
대부분의 데이터 유형에서 비교 연산자는 BSON 유형이 쿼리 값의 유형과 일치하는 경우에만 필드에 대한 비교를 수행합니다. 그러나 MongoDB의 유형 브라케팅은 제한된 교차 BSON 비교를 허용합니다.
문서 필드 일치
재고
컬렉션에서 20
미만의 수량이 있는 모든 문서를 선택합니다.
db.inventory.find( { quantity: { $lt: 20 } } )
출력:
포함된 문서 필드를 기반으로 업데이트 수행
price
필드는 다음 예제에서 포함된 문서의 필드에 대한 $lt
비교를 기반으로 설정됩니다.
db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )
출력:
이 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
보다 작거나 같은 재고
컬렉션의 모든 항목을 선택합니다.
출력:
포함된 문서 필드를 기반으로 업데이트 수행
price
필드는 다음 예제에서 포함된 문서의 필드에 대한 $lte
비교를 사용하여 설정됩니다.
db.inventory.updateMany(
{ "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)
출력:
이 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();
이 쿼리는 아래 스크린샷과 같이 다음 문서를 반환합니다.
따라서 이 기사의 도움을 통해 사용자는 Date()
메서드 사용에 대한 정보를 얻었습니다. 예제는 $gte
및 $lte
명령을 간략하게 설명합니다.
또한 데이터를 기반으로 한 반환 쿼리도 코드 스니펫으로 설명됩니다.