Vỏ cung cấp một số tính năng hay nhưng ẩn vì đó là một môi trường tương tác.
Khi bạn chạy các lệnh từ tệp javascript thông qua mongo command.js, bạn sẽ không nhận được hành vi hoàn toàn giống nhau.
Có hai cách để giải quyết vấn đề này.
(1) giả mạo lớp vỏ và khiến nó nghĩ rằng bạn đang ở chế độ tương tác
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
hoặc
(2) sử dụng Javascript để dịch kết quả của find()
thành một JSON có thể in được
mongo dbname command.js > output.json
nơi command.js chứa cái này (hoặc tương đương):
printjson( db.collection.find().toArray() )
Thao tác này sẽ in ra một loạt kết quả, bao gồm [ ]
- nếu bạn không muốn, bạn có thể lặp lại mảng và printjson()
từng phần tử.
Nhân tiện, nếu bạn đang chạy chỉ một câu lệnh Javascript, bạn không phải đặt nó vào một tệp và thay vào đó bạn có thể sử dụng:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json