2

I'm trying to follow this tutorial: http://www.ultrabug.fr/tag/mongoexport/

and use a sh file for the query line. this is my file:

#!/bin/bash
d=`date --date="-3 month"`
echo "{ timeCreated: { "\$lte": $d} }"

this is my mongoexport line:

 mongoexport --db game_server --collection GameHistory -query /home/dev/test2.sh --out /home/dev/file.json

I keep getting:

assertion: 16619 code FailedToParse: FailedToParse: Expecting '{': offset:0 of:/home/dev/test2.sh

why? How can I make this work?

2 Answers 2

11

I found several errors in your approach, let's examine them one by one.

Date format

MongoDB expects date to be a number or ISO 8601 string.

Unfortunately, unix date utility have no build-in support for this format, so you should use:

d=`date --date="-3 month" -u +"%Y-%m-%dT%H:%M:%SZ"`

Using extended JSON

JSON specification have no support for dates, so you should use MongoDB extended JSON. So, your final query should look like this:

{ "timeCreated": { "$lte": { "$date": "2014-05-12T08:53:29Z" } } }

test.sh output

You messed up with quotation marks. Here is a script example, outputting correct JSON:

#!/bin/bash
d=`date --date="-3 month" -u +"%Y-%m-%dT%H:%M:%SZ"`
echo '{ "timeCreated": { "$lte": { "$date": "'$d'" } } }'

Passing query to mongoexport

mongoexport expects --query to be a JSON string, not .sh script. So, when you're passing file path to --query, mongoexport expects it to be a JSON file.

To fix it you should execute test2.sh yourself and pass resulting string to mongoexport:

mongoexport --db game_server --collection GameHistory \
  --query "`./test2.sh`" --out ./test2.json

N.B. Notice " quotation marks around ./test2.sh call. They're telling bash to treat ./test2.sh output as a single parameter, ignoring all inner quotation marks and whitespaces.

Sign up to request clarification or add additional context in comments.

Comments

0

You need to add back ticks around a script or command to have it evaluated:

 mongoexport --db game_server --collection GameHistory \
 -query `/home/dev/test2.sh` --out /home/dev/file.json

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.