R - Как скопировать содержимое одной коллекции в другую, используя Mongolite
Мы используем MongoDB для хранения ряда идентично структурированных баз данных, которые необходимо объединить в одну базу данных, и мы используем Mongolite для управления базой данных, а не просто для ее запроса.
Мы создаем 365 баз данных, из которых каждый день создается одна, каждая с одинаковыми коллекциями: автомобили, клиенты, персонал. В каждой из этих коллекций они имеют идентичные поля (например, customerID, carModel или employeeID) для каждой из 365 баз данных. Моя цель состоит в том, чтобы скопировать все данные из этих 365 баз данных в одну базу данных, чтобы все их можно было запрашивать одновременно. Я не пытаюсь объединить какие-либо из разных коллекций вместе, а скорее копирую содержимое всех коллекций клиентов в одну коллекцию клиентов.
Я нашел следующую команду в руководстве пользователя MongoDB:
db.collection.copyTo ()
https://docs.mongodb.com/v3.2/reference/method/db.collection.copyTo/
Исходя из документации, кажется, что это достигнет моей цели, но я не уверен, как это сделать, используя Mongolite и команду run(). Если это невозможно, мой следующий вопрос заключается в том, могу ли я встроить сценарии командной строки / сценарии bash в мой код R для выполнения команд MongoDB из сценария R.
Заранее спасибо за любую помощь в использовании MongoLite, я все еще новичок!
0 ответов
Я искал тот же вопрос и не смог найти прямого ответа, однако есть косвенный способ скопировать содержимое одной коллекции в другую. На странице readme упоминается, что mongolite упоминает, что вы можете сначала передать jsonlines в соединение (это будет файл tmp), а затем импортировать в другую коллекцию:
# Stream jsonlines into a connection
tmp <- tempfile()
m$export(file(tmp))
# Stream it back in R
library(jsonlite)
m2$import(file(tmp))
Я скопировал этот код со страницы readme монголита. Я лично пробовал это решение, и оно работает.