Как экспортировать 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):

  1. В правом верхнем углу графического интерфейса Robo 3T есть кнопка "Просмотр результатов в текстовом режиме", щелкните ее и скопируйте все

  2. вставьте все на этот сайт: https://json-csv.com/

  3. нажмите кнопку загрузки, и теперь у вас есть это в электронной таблице.

надеюсь, это поможет кому-то, поскольку я хочу, чтобы у 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

  1. сделайте поиск
  2. результаты просмотра с помощью кнопки в режиме JSON
  3. скопировать результат в слово
  4. вывести результат из слова