-1

mongoexport -h "hostname" -u "username" -p password -d "dbname" -c "collection" -q '{"REQUEST_TIMESTAMP": "{$gt:new Date(ISODate().getTime() - 1000 * 60 * 60)}" }' -o output.json

I want to fetch records for last 1 hour using mongoshell the above date function works perfectly in mongodb but not in mongoshell.

can you please explain me how to use epoch format for last one hour, it should be dynamic not harcoded

1 Answers1

0

Say we have the following data:

> db.test.find()
{ "_id" : ObjectId("59f45e259ea74673bf2e80fe"), "d" : ISODate("2016-10-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e289ea74673bf2e80ff"), "d" : ISODate("2016-11-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e2d9ea74673bf2e8100"), "d" : ISODate("2016-12-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e319ea74673bf2e8101"), "d" : ISODate("2017-12-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e379ea74673bf2e8102"), "d" : ISODate("2018-12-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e3a9ea74673bf2e8103"), "d" : ISODate("2018-12-28T11:00:00Z") }
{ "_id" : ObjectId("59f45e3d9ea74673bf2e8104"), "d" : ISODate("2018-12-28T12:00:00Z") }

We can export it using a similar query to yours but adding date from bash

$ date
28 Oct 2017 12:01:21

$ d=$(date -d '1 hour ago' +%s%N | cut -b1-13)

$ ./mongoexport -d "test" -c "test" -q '{"d": {$gt: new Date('$d') }}' -o output.json

Then if we look at the output:

$ cat output.json
{"_id":{"$oid":"59f45e319ea74673bf2e8101"},"d":{"$date":"2017-12-28T10:00:00.000Z"}}
{"_id":{"$oid":"59f45e379ea74673bf2e8102"},"d":{"$date":"2018-12-28T10:00:00.000Z"}}
{"_id":{"$oid":"59f45e3a9ea74673bf2e8103"},"d":{"$date":"2018-12-28T11:00:00.000Z"}}
{"_id":{"$oid":"59f45e3d9ea74673bf2e8104"},"d":{"$date":"2018-12-28T12:00:00.000Z"}}
Kevin Smith
  • 13,746
  • 4
  • 52
  • 77