Как экспортировать json из Mongodb с помощью robomongo
Так что я мало что знаю о MongoDB
. У меня есть RoboMongo
, с помощью которого я подключаюсь к MongoDB. Мне нужно сделать это - в этом MongoDB есть коллекция. Я хочу экспортировать данные из этой коллекции, чтобы сохранить ее в файл.
Я использовал интерфейс для открытия данных из коллекции в виде текста и сделал CTRL + A
и вставил в текстовый файл. Однако я обнаружил, что не все данные скопированы, а также что в текстовых данных было много комментариев, которые, естественно, нарушают JSON.
Мне интересно, есть ли у RoboMongo объект Export As JSON
, чтобы я мог сделать чистый экспорт.
Любые указатели оцениваются!
Ответы
Ответ 1
Вы можете использовать tojson
для преобразования каждой записи в JSON в сценарии оболочки MongoDB.
Запустите этот скрипт в RoboMongo:
var cursor = db.getCollection('foo').find({}, {});
while(cursor.hasNext()) {
print(tojson(cursor.next()))
}
Это распечатывает все результаты в виде JSON-подобного массива.
Результат не совсем JSON! Некоторые типы, такие как даты и идентификаторы объектов, печатаются как вызовы функций JavaScript, например, ISODate("2016-03-03T12:15:49.996Z")
.
Может быть не очень эффективно для больших наборов результатов, но вы можете ограничить запрос. В качестве альтернативы вы можете использовать mongoexport
.
Ответ 2
Функциональность оболочки Robomongo решит проблему. В моем случае мне понадобилось несколько столбцов в формате CSV.
var cursor = db.getCollection('Member_details').find({Category: 'CUST'},{CustomerId :1,Name :1,_id:0})
while (cursor.hasNext()) {
var record = cursor.next();
print(record.CustomerID + "," + record.Name)
}
Output : -------
334, Harison
433, Rechard
453, Michel
533, Pal
Ответ 3
Быстрый и грязный способ: просто напишите свой запрос как db.getCollection('collection').find({}).toArray()
и щелкните правой кнопкой мыши Copy JSON
. Вставьте данные в выбранный вами редактор.
![enter image description here]()
Ответ 4
Есть несколько GUI MongoDB, некоторые из них имеют встроенную поддержку для экспорта данных. Полный список GUI MongoDB вы найдете в http://mongodb-tools.com
Вы спросили об экспорте результатов вашего запроса, а не об экспорте целых коллекций. Дайте 3T MongoChef MongoDB GUI попробуйте, этот инструмент поддерживает ваш конкретный прецедент.
Ответ 5
вы говорите "экспорт в файл", как в электронной таблице? как на.csv?
ИМО это самый простой способ сделать это в Robo 3T (ранее robomongo):
-
В правом верхнем углу графического интерфейса Robo 3T есть кнопка "Просмотр результатов в текстовом режиме", щелкните ее и скопируйте все
-
вставьте все на этот сайт: https://json-csv.com/
-
нажмите кнопку загрузки, и теперь у вас есть это в электронной таблице.
надеюсь, это поможет кому-то, поскольку я хочу, чтобы у Robo 3T были возможности экспорта
Ответ 6
Не запускайте эту команду в оболочке, введите script в командной строке с именем вашей базы данных, именем коллекции и именем файла, все заменив заполнители.
mongoexport --db (Database name) --collection (Collection Name) --out (File name).json
Это работает для меня.
Ответ 7
Я не думаю, что у робомонго есть такая особенность.
Поэтому вам лучше использовать функцию mongodb как mongoexport для конкретной коллекции.
http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format
Но если вы ищете решение для резервного копирования, лучше использовать
mongodump / mongorestore
Ответ 8
Развернувшись на ответе Аниша, я хотел, чтобы я мог применить любой запрос для автоматического вывода всех полей, а также для определения их в заявлении печати. Возможно, это будет упрощено, но это было что-то быстрое и грязное, что отлично работает:
var cursor = db.getCollection('foo').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1});
while (cursor.hasNext()) {
var record = cursor.next();
var output = "";
for (var i in record) {
output += record[i] + ",";
};
output = output.substring(0, output.length - 1);
print(output);
}
Ответ 9
Если вы хотите использовать mongoimport, вы хотите экспортировать этот путь:
db.getCollection('tables')
.find({_id: 'q3hrnnoKu2mnCL7kE'})
.forEach(function(x){printjsononeline(x)});
Ответ 10
Использование оболочки robomongo script:
//on the same db
var cursor = db.collectionname.find();
while (cursor.hasNext()) {
var record = cursor.next();
db.new_collectionname.save(record);
}
Использование команды экспорта и импорта mongodb
Вы можете добавить --jsonArray
параметр/флаг в команду mongoexport
, это экспортирует результат как одиночный массив json.
Затем просто при необходимости импортируйте флаг --jsonArray
.
Или удалите начальные и конечные скобки массива [] в файле, тогда ваш измененный и экспортированный файл будет импортироваться с помощью команды mongoimport
без флага --jsonArray
.
Подробнее об экспорте здесь: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray
Импортировать здесь:
https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray
Ответ 11
У меня была такая же проблема, и запуск script в robomongo (Robo 3T 1.1.1) также не позволяет копировать значения, и экспорт не существует.
Лучший способ добиться этого - использовать mongoexport, если mongodb установлен на вашем локальном компьютере, вы можете использовать mongoexport для подключения к базе данных на любом сервере и извлечения данных
Чтобы подключиться к данным на удаленном сервере и выходному файлу csv, запустите в командной строке следующий mongoexport
mongoexport --host HOSTNAME --port PORT --username USERNAME --password "PASSWORD" --collection COLLECTION_NAME --db DATABASE_NAME --out OUTPUTFILE.csv --type=csv --fieldFile fields.txt
fieldFile: помогает извлекать нужные столбцы, например:
содержимое поля .txt может быть просто:
идентификатор пользователя
чтобы извлекать только значения столбца 'userId'
Данные на удаленном сервере, выходной файл json:
mongoexport --host HOST_NAME --port PORT --username USERNAME --password "PASSWORD" --collection COLECTION_NAME --db DATABASE_NAME --out OUTPUT.json
извлекает все поля в json файл
данные на localhost (mongodb должен выполняться на локальном хосте)
mongoexport --db DATABASE_NAME --collection COLLECTION --out OUTPUT.json
Ссылка: https://docs.mongodb.com/manual/reference/program/mongoexport/#use
Ответ 12
Решение:
mongoexport --db test --collection traffic --out traffic.json<br><br>
![enter image description here]()
Где:
база данных → макет-сервер
название коллекции → api_defs
имя выходного файла → childChoreRequest.json
Ответ 13
- сделайте поиск
- результаты просмотра с помощью кнопки в режиме JSON
- скопировать результат в слово
- вывести результат из слова