Можно ли записать результат запроса в файл из mongo js script. Я много искал, но я не нашел никакого решения.
например: -
cursor = db.users.find();
while(cursor.hasNext()) {
cursor.next();
// writing the cursor output to file ????<br/>
}
Можно ли записать результат запроса в файл из mongo js script. Я много искал, но я не нашел никакого решения.
например: -
cursor = db.users.find();
while(cursor.hasNext()) {
cursor.next();
// writing the cursor output to file ????<br/>
}
Вы можете использовать печать, а затем перенаправить вывод:
script.js
cursor = db.users.find();
while(cursor.hasNext()){
printjson(cursor.next());
}
затем запустите script и перенаправьте вывод в файл:
mongo --quiet script.js > result.txt
http://www.mongodb.org/display/DOCS/Scripting+the+shell пункт "Различия между сценарием и интерактивной/Печать".
./mongo server.com/mydb --quiet --eval "db.users.find(). forEach (printjson);" > 1.txt
Вы можете пропустить цикл while с помощью forEach()
:
db.users.find().forEach(printjson);
Не проще ли использовать один из Mongo drivers для языка общего назначения (например, Python, Ruby, Java и т.д. ) и записывать результаты в файл таким образом, в формате, который вы можете использовать (например, в CSV и т.д.)?
ОБНОВЛЕНИЕ: В соответствии с документацией для mongodump вы можете экспортировать коллекцию с запросом:
$ ./mongodump --db blog --collection posts
-q '{"created_at" : { "$gte" : {"$date" : 1293868800000},
"$lt" : {"$date" : 1296460800000}
}
}'
Однако вам нужно будет импортировать эту коллекцию обратно в MongoDB для ее работы или использовать mongoexport для экспорта в виде JSON или CSV, используя тот же флаг запроса (-q
) как mongodump
.
Для разных пользователей вам необходимо создать файл script.js с содержимым:
mongo = new Mongo("localhost");
doctor = mongo.getDB("doctor");
users = doctor.getCollection("users");
cities = users.distinct("address.city");
printjson(cities);
затем в консоли выполните:
mongo --quiet script.js > result.txt