반응형
MongoDB Shell에서 ISO 날짜에 일 추가/감산
특정 날짜 이전 또는 이후의 이벤트를 가져와야 하는 쿼리가 있습니다.저는 그 아이소데이 변수에 하루를 더하거나 빼야 합니다.제 질문은 다음과 같습니다.
db.event.find().forEach( function (x) {
print("x : " + x.EventID + ", " + x.ISODate);
db.events.find( {
"$or" : [{
"StartDate" : { "$gte" : x.ISODate } // Here i need to subtract one day
}, {
"EndDate": { "$lt" : x.ISODate} // Here i need to add one day
}]
}).forEach(function(otherDay) {
print("x.EventID : " + x.EventID + ", other.Date : " + otherDay.StartDate + " - " + otherDay.EndDate);
});
});
mongodb 쉘의 ISODate 변수에 일을 추가하거나 뺄 수 있는 방법은 무엇입니까?
이것은 Mongodb와 함께 최근 X분 데이터를 가져오기 위한 쿼리에서 응답되었습니다.
query = {
timestamp: { // 18 minutes ago (from now)
$gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
}
}
그리고 당신의 경우, 며칠 동안:
"StartDate" : { "$gte" : new Date(ISODate().getTime() - 1000 * 3600 * 24 * 3) }
또는
"StartDate" : { "$gte" : new Date(ISODate().getTime() - 1000 * 86400 * 3) }
(여기서 3일은 당신의 일수입니다)
정확한 답은 아니지만 관련이 있습니다.
저장된 날짜 값을 기준으로 제자리에 있는 MongoDB 컬렉션의 모든 항목에 대한 날짜 필드를 증분해야 했습니다.
아래 쿼리는 myCollection의 myDateField에 1일을 추가합니다.
db.myCollection.find().snapshot().forEach(
function (elem) {
const dateDiffInMs = 1 * 24 * 60 * 60000
db.myCollection.update(
{
_id: elem._id
},
{
$set: {
myDateField: new Date(elem.myDateField.getTime() + dateDiffInMs)
}
}
);
}
);
1 day = 1 * 24 * 60 * 60000 = 1 day x 24 hours x 60 minutes x 60 seconds x 1000 milliseconds
- dateDiffInMs에 마이너스 값을 사용하면 시간을 차감하거나 되돌릴 수 있습니다.
당신의 질문이 오해를 받은 것 같습니다.
저는 당신이 하루를 빼고 당신의 질의에 하루를 추가할 필요가 있기를 바랍니다. 당신은 그렇게 할 수 있습니다.{$subtract : [x.ISODate,(1 * 24 * 60 * 60 * 1000)]}
db.event.find().forEach( function (x) {
print("x : " + x.EventID + ", " + x.ISODate);
db.events.find( {
"$or" : [{
"StartDate" : { "$gte" : {$subtract : [x.ISODate,(1 * 24 * 60 * 60 * 1000)]} } // Here i need to subtract one day
}, {
"EndDate": { "$lt" : {$subtract : [x.ISODate,(-1 * 24 * 60 * 60 * 1000)]}} // Here i need to add one day
}]
}).forEach(function(otherDay) {
print("x.EventID : " + x.EventID + ", other.Date : " + otherDay.StartDate + " - " + otherDay.EndDate);
});
});
부터Mongo 5사용할 수 있습니다.
{
$dateSubtract: {
startDate: "$$NOW",
unit: "day",
amount: 1
}
}
그것은 어제의 것이 될 것입니다.ISODate()이전 버전의 mongo의 경우 다음을 사용할 수 있습니다.
new Date(ISODate().setDate(ISODate().getDate() - 1))
언급URL : https://stackoverflow.com/questions/30996728/adding-subtracting-days-to-isodate-in-mongodb-shell
반응형
'programing' 카테고리의 다른 글
| MongoDBC# 드라이버:삽입 시 속성 무시 (0) | 2023.05.07 |
|---|---|
| 확장 메서드를 일반적이지 않은 정적 클래스에 정의해야 합니다. (0) | 2023.05.07 |
| 열거형 변수의 기본값은 무엇입니까? (0) | 2023.05.07 |
| 이미 삭제한 대용량 파일 때문에 GitHub에 푸시할 수 없습니다. (0) | 2023.05.07 |
| 선택한 실행 대상이 이 작업에 적합하지 않습니다. (0) | 2023.05.07 |