mongodbmongodb-querymongoexport

Use mongoexport with a --query for ISODate


I have this query but i´m getting a syntax error: unexpected identifier

mongoexport --db ium --collection events \
  --query 'db.events.find({'created_at' : {
      $gte: ISODate("2016-03-01T00:00:00.001Z"),
      $lte: ISODate("2016-03-29T23:59:59:59.000Z")
    }, 
    "name" : "UPDATE_SUCCESS"})' \
 --out guille1_test.json

what can it be wrong?


Solution

  • 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.