R-如何使用Mongolite将一个收藏夹的内容复制到另一个收藏夹

时间:2019-01-17 21:35:04

标签: r mongodb mongolite

我们正在使用MongoDB存储许多结构相同的数据库,这些数据库需要组合到一个数据库中,并且正在使用Mongolite来操纵数据库,而不仅仅是查询它。

我们生成365个数据库,每天创建一个数据库,每个数据库具有相同的集合:汽车,客户和人员。在每个集合中,它们对于365个数据库具有相同的字段(例如customerID,carModel或employeeID)。我的目标是将这365个数据库中的所有数据复制到一个数据库中,以便可以同时查询所有数据。我并不是在试图将任何不同的集合都组合在一起,而是要将所有客户集合的内容复制到一个客户集合中。

我在MongoDB用户指南中找到了以下命令:

db.collection.copyTo()

https://docs.mongodb.com/v3.2/reference/method/db.collection.copyTo/

根据文档,这似乎可以实现我的目标,但是我不确定如何使用Mongolite和run()命令来实现此目的。如果不可能,我的下一个问题是是否可以在R代码中嵌入命令行脚本/ bash脚本,以便从R脚本中执行MongoDB命令。

在此感谢您在使用MongoLite方面的任何帮助,我还是新手!

1 个答案:

答案 0 :(得分:0)

我搜索了相同的问题,但找不到直接答案,但是,有一种间接的方法可以将集合的内容复制到另一个。自述页面提到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))

我从mongolite的自述页面复制了此代码。我亲自尝试了此解决方案,并且有效。