特定の日付から1日前または後のイベントを取得する必要があるクエリがあります。 ISODate変数に1日を加算または減算する必要があります。私のクエリは次のとおりです。
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) {
db.myCollection.update(
{
_id: elem._id
},
{
$set: {
myDateField: new Date(elem.myDateField.getTime() + 1*24*60*60000)
}
}
);
}
);
1 day = 1*24*60*60000 = 1 x 24 hours x 60 minutes x 60 seconds x 1000 milliseconds