MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Existe uma maneira de imprimir 'bonita' a saída do shell do MongoDB em um arquivo?


O shell fornece alguns recursos interessantes, mas ocultos, porque é um ambiente interativo.

Quando você executa comandos de um arquivo javascript por meio de comandos mongo.js, você não obtém um comportamento exatamente idêntico.

Existem duas maneiras de contornar isso.

(1) falsificar o shell e fazê-lo pensar que você está no modo interativo
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF

ou
(2) use Javascript para traduzir o resultado de um find() em um JSON imprimível
mongo dbname command.js > output.json

onde command.js contém isto (ou seu equivalente):
printjson( db.collection.find().toArray() )

Isso imprimirá bastante a matriz de resultados, incluindo [ ] - se você não quiser, pode iterar sobre o array e printjson() cada elemento.

A propósito, se você estiver executando apenas uma única instrução Javascript, não precisará colocá-la em um arquivo e, em vez disso, poderá usar:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json