Инструментите за база данни на MongoDB включват помощна програма, наречена mongoexport
което ви позволява да експортирате данни на MongoDB в CSV или JSON файл.
Едно от нещата, които можете да правите с тази помощна програма, е да експортирате резултатите от заявката. Тази статия ви показва как да използвате mongoexport
за да експортирате резултатите от заявката на MongoDB в JSON файл.
Синтаксис
Синтаксисът за mongoexport
става така:
mongoexport --collection=<coll> <options> <connection-string>
Трябва да стартирате mongoexport
команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).
Не стартирайте mongoexport
команди от mongo
черупка.
Пример
Следният примерен код експортира резултатите от заявка в JSON файл:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Това експортира заявка, която отправя заявки към колекция, наречена pets
в PetHotel
база данни. Заявката се експортира във файл, наречен dogs.json
в data/
папка.
Ако папката не съществува, тя е създадена. Същото и с файла. Между другото, това предполага, че няма проблеми с разрешенията при записване на файл на посоченото място.
В този пример не посочих никакъв хост, порт, удостоверяване и т.н., така че той експортира колекцията от екземпляра на MongoDB, работещ на номера на порта по подразбиране на localhost 27017
.
Можете също да използвате --type
параметър, за да посочите изрично JSON. По подразбиране е JSON, така че това не е задължително при експортиране в JSON.
Можете също да включите --fields
параметър, за да посочите кои полета да експортирате. По подразбиране той експортира всички полета, когато използва JSON. Въпреки това, когато експортирате в CSV, трябва да посочите кои полета да експортирате.
Ето пример за горния пример с добавени тези два параметъра:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json
По-долу е обяснение на параметрите, които предоставихме тук.
Параметър | Описание |
---|---|
--db или -d | Указва базата данни, в която да се изпълнява mongoexport . В този случай базата данни се нарича PetHotel . Алтернативно този параметър може да бъде предаден с помощта на -d (вместо --db ). |
--collection или -c | Указва колекцията, която искаме да експортираме (или да изпълним заявката). В този случай колекцията се нарича pets . Алтернативно този параметър може да се предава като -c (вместо --collection ). |
--type | Указва типа на експортирания файл. В този случай указваме json за да го експортирате в JSON файл. Тъй като JSON е стойността по подразбиране, този параметър не е задължителен при експортиране в JSON. |
--fields | Указва полетата, които искаме да експортираме. Имаме възможност да експортираме всички полета или само някои. Когато експортирате в JSON, указването на имената на полетата не е задължително (това е изискване при експортиране в CSV). |
--query или -q | Указва заявката, за която резултати искаме да експортираме. Това трябва да бъде затворено в единични кавички (така че да не взаимодейства с вашата обвивка). Този параметър може да се предава и с помощта на -q . |
--out | Указва името на експортирания файл и къде ще се намира. Ако не посочите име на файл, mongoexport записва данни в стандартен изход (stdout ). |
Проверете експортирания файл
Нека проверим дали операцията по експортиране работи според очакванията.
Първо, нека изпълним заявката спрямо оригиналната колекция.
use PetHotel
db.pets.find({ "type": "Dog" })
Резултат:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Така че можем да видим, че има 4 кучета, всички със същите полета, които посочихме в нашата операция за експортиране.
Сега нека отворим експортирания файл dogs.json
за да видите какво има вътре:
{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0} {"_id":2.0,"name":"Bark","type":"Dog","weight":10.0} {"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0} {"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}
Всички данни са в експортирания файл, както се очаква.
Експортиране на по-малко полета
Можете да посочите по-малко полета с --fields
параметър, ако желаете.
Пример:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json
Резултатен файл:
{"_id":1.0,"name":"Wag","weight":20.0} {"_id":2.0,"name":"Bark","weight":10.0} {"_id":6.0,"name":"Fetch","weight":17.0} {"_id":7.0,"name":"Jake","weight":30.0}
Ще забележите, че _id
полето беше включено в експортирания файл, въпреки че не го включих изрично в --fields
аргумент. Това е така, защото _id
полето винаги се включва при експортиране в JSON – дори когато не го включите изрично. Това не е така при експортиране в CSV.
Контрол на достъпа/Удостоверяване
Ако не използвате localhost, можете да използвате --host
параметър за определяне на хоста и --port
за да посочите порта. Можете също да използвате --username
параметър за определяне на потребителското име и --password
до за паролата. Ако пропуснете параметъра за парола, ще бъдете подканени да го въведете. Има и --authenticationDatabase
параметър за определяне на базата данни за удостоверяване, където е създаден потребителят.
Пример:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Проверете за mongoexport
mongoexport
е част от пакета MongoDB Database Tools. Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.
Ако не сте сигурни дали имате MongoDB Database Tools/mongoexport
инсталиран, опитайте да изпълните следната команда във вашия терминал или команден ред, за да проверите:
mongoexport --version
Ако го имате, трябва да видите информация за версията и т.н. Ако го нямате, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да го инсталирате на вашата система.
Къде да изпълнявам командите?
Не забравяйте, че трябва да стартирате mongoexport
команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).