Redirecting the output to a text file in MongoDB

2019-09-02 08:42发布

问题:

I want to redirect the output of a mongodb command into a file, but it's not working. I searched a lot on the net, but none of the commands worked for me.

> mongo --quiet 99.99.99.99/db --eval 'printjson(db.productAttribute.distinct('productId'))' > /home/myname/output_query.json

Wed May 13 12:28:58.022 SyntaxError: Unexpected identifier

> mongo --quiet db --eval 'printjson(db.productAttribute.distinct('productId'))' > /home/myname/output_query.json

Wed May 13 12:29:09.896 SyntaxError: Unexpected identifier

The command is simple, and I don't want to put it into a separate .js file. Also, I am trying to execute this command from the mongodb shell itself.

回答1:

First, you should not run this in mongo shell. This will only work from linux shell as mongo executable is available in linux shell, but you are trying to call mongo executable from inside mongo shell.

Second, use double quotes in your command.

So, open a terminal window and run the following. It will work.

$ mongo --quiet 99.99.99.99/db --eval 'printjson(db.productAttribute.distinct("productId"))' > /home/myname/output_query.json