Use mongoexport with a --query for ISODate
You need to use "extended json" in queries with mongoexport. So the way to specify "dates" is with $date
instead. And the --query
is just the "query string" in JSON format. Not the whole command entered into the shell:
mongoexport --db ium --collection events \ --query '{ "created_at": { "$gte": { "$date": "2016-03-01T00:00:00.001Z" }, "$lte": { "$date": "2016-03-29T23:59:59.000Z" } }, "name": "UPDATE_SUCCESS" }' \ --out guile1_test.json
Note also the corrected date string in the $lte
argument and of course the "quoting" use of ''
around the body of the JSON argument and ""
around the internal expressions and values. It s important that these types of quotes are different, as well as "shell arguments" should have their "outer" quotes as ''
, otherwise the "shell" tries to evaluate the expression contained.
Another working solution is by using the new Date()
constructor as described in the MongoDB manual. This will result in a smaller query body footprint like so:
mongoexport --db ium --collection events \ --query '{ "created_at": { "$gte": new Date("2016-03-01T00:00:00.001Z"), "$lte": new Date("2016-03-29T23:59:59.000Z") }, "name": "UPDATE_SUCCESS" }' \ --out guile1_test.json
This approach worked for me out-of-the-box while all other alternatives failed. There is a relative article describing this approach here.
Best way to achieve it as following. Because new Date and IOSDate would be invalid literal for this command.
For remote host
mongoexport --host {{host}} --username {{username}} --password {{passord}} --authenticationDatabase admin --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"} } }' --type json --out {{path of directory where you would want to export file.}}
For local host
mongoexport --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"} } }' --type json --out {{path of directory where you would want to export file.}}