У меня есть коллекция в mongoDB в проекте, который выполняется локально, и мне нужно скопировать коллекцию на сервер разработки. Подскажите, как это сделать, учитывая, что:
Локальная машина (источник) доступна извне, но только по IP.
Версия локального mongo - 2.0.4, а версия mongo на сервере разработки - 2.2.2.
Я провел небольшое исследование, но я не уверен в некоторых вещах ... например, какие учетные данные я должен выбрать для исходной БД? ... те, для подключения SSH? ... или ... ? ...
Заранее спасибо :)
Вы можете создать другое соединение с целевым сервером и использовать save()
функция.
Например:
conn2 = новый Mongo ("desitination_server: port")
desti_db = conn2.getDB ("destination_db_name") -> теперь вы можете получить доступ к целевому серверу mongodb через соединение с исходной БД.
db.sourceCollection.find (). forEach (функция (x) {desti_db.targetCollectionName.save (x)}); -> прочитать текущую коллекцию исходной БД и сохранить ее в целевом mongodb
Лучшее решение, которое мне удалось think of
это один:
db.prices.find()
{"_id" : ObjectId("..."), "action" : "show", "price" : 12 }
{"_id" : ObjectId("..."), "action" : "hide", "price" : 10 }
{"_id" : ObjectId("..."), "action" : "poke", "price" : 20 }
................
к такому (добавлен "," после каждого JSON, удален идентификатор, поэтому у меня есть массив в конце):
[
{"action" : "show", "price" : 12 },
{"action" : "hide", "price" : 10 },
{"action" : "poke", "price" : 20 }
................
]
А затем передайте этот новый массив JSON в метод вставки новой коллекции: (скопировал массив в буфер обмена непосредственно из текстового редактора, который я использовал для его создания)
db.prices.inset(
+ Shift + Insert + )
И вуаля :) ... все ваши данные перенесены :) ...
Во-первых, я бы посоветовал вам обновить свои версии MongoDB - и ваша версия для разработчиков, и локальная версия очень старые, и вы должны иметь их обе в одной версии, если это вообще возможно. Версии 2.0 и 2.2 сильно различаются (в 2.2 нет глобальной блокировки), и обе имеют несколько стабильных выпусков с момента перечисленных вами версий. Наконец, рассматриваются обе версии. конец жизни.
Что касается того, как передавать данные между ними, у вас есть несколько вариантов, но если данных относительно мало, то самый простой вариант - mongodump. Просто используйте это, чтобы выгрузить локальные данные, которые вы хотите передать в BSON (будут включать индексы и т.д., если вы возьмете всю коллекцию или базу данных), а затем используйте mongorestore чтобы вставить эти данные в базу данных разработчика. Опять же, я бы рекомендовал использовать более новую версию mongodump / mongorestore, чем 2.2.2 или 2.0.4 - в более поздних версиях инструментов было исправлено несколько ошибок, которые вы можете столкнуться в противном случае (более поздние версии инструментов должны быть обратно совместимы. ).
Что касается других вариантов, если вы берете всю базу данных, вы можете просто скопировать весь набор файлов для этой базы данных с локального хоста на сервер разработки. Вам нужно будет перезапустить базу данных, и это будет означать очистку этой базы данных каждый раз на сервере разработки, но в зависимости от ваших потребностей это может быть вариантом. Вы также можете посмотреть разъем mongo как способ зеркального отображения ваших данных между локальными пользователями и разработчиками в более реальном времени и непрерывно. Вероятно, есть несколько других способов добиться этого, но это наиболее простые.
Почему бы вам не попробовать db.cloneCollection ()? http://docs.mongodb.org/manual/reference/method/db.cloneCollection/
вы должны запустить db.cloneCollection (from_instance, collection_name, query) на экземпляре dev mongodb. from_instance будет IP-адресом и адресом порта локального экземпляра. И запрос не является обязательным - если он не введен, он будет извлекать все документы в исходной коллекции.
итак, что-то вроде: db.cloneCollection ("12.34.56.78:27017", "mydb.mycollectionname")
MongoCopyPaste: найдите любой реестр на удаленном сервере. Скопируйте и вставьте на сервер судьбы. От одной до многих коллекций.