MongoDB의 날짜 비교
- MongoDB에서 날짜 범위 사용
-
MongoDB에서
$gt
사용 -
MongoDB에서
$gte
사용 -
MongoDB에서
$lt
사용 -
MongoDB에서
$lte
사용 - MongoDB에서 두 날짜 사이의 문서 찾기
- MongoDB에서 특정 날짜 이후의 문서 찾기
- 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 } } )
출력:
다음 예제는 포함된 문서의 필드에 대한 $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 } }
$gte
는 field
값이 제공된 값(예: 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 } } )
출력:
price
필드는 포함된 문서의 필드에 대한 $gte
비교를 사용하여 다음 예제에서 설정됩니다.
db.inventory.updateMany(
{ "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)
출력:
MongoDB에서 $lt
사용
통사론:
{ field: { $lt: value } }
$lt
는 field
값이 제공된 value
보다 작은 문서를 선택합니다. 다음 예에서는 이전 inventory
컬렉션을 사용합니다.
수량
이 20
미만인 재고
컬렉션에서 모든 문서를 선택합니다.
db.inventory.find( { quantity: { $lt: 20 } } )
출력:
다음 예제는 포함된 문서의 필드에 대한 $lt
비교를 기반으로 price
필드를 설정합니다.
db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )
출력:
MongoDB에서 $lte
사용
통사론:
{ field: { $lte: value } }
$lte
는 field
값이 제공된 value.
보다 작거나 같은(즉 =
) 문서를 선택합니다. 다음 예에서는 이전 inventory
컬렉션을 사용합니다.
다음 예를 고려하십시오.
db.inventory.find( { quantity: { $lte: 20 } } )
이 쿼리는 수량 필드 값이 20.
보다 작거나 같은 재고
컬렉션의 모든 항목을 반환합니다.
출력:
price
필드는 포함된 문서의 필드에 대한 $lte
비교를 사용하여 다음 예제에서 설정됩니다.
db.inventory.updateMany(
{ "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)
출력:
아래 정보는 다음 문서를 사용하여 이 구문을 데이터 세트에 적용하는 방법을 보여줍니다.
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();
출력:
다음은 날짜 기반 반환 쿼리입니다. 생성 날짜가 2018-05-19T11:10:23Z
이후인 레코드가 반환됩니다.
질문:
> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();
출력:
이 기사를 통해 Date()
메소드 사용에 대해 배웠습니다. 예제는 $gte
및 $lte
명령과 데이터를 기반으로 하는 반환 쿼리를 간략하게 설명했습니다.