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 монголита. Я лично пробовал это решение, и оно работает.

Другие вопросы по тегам