1

我们正在使用 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 的任何帮助,我还是个新手!

4

1 回答 1

1

我搜索了同一个问题,但找不到直接答案,但是,有一种间接方法可以将集合的内容复制到另一个集合。自述页面提到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的自述文件页面复制了这段代码。我个人尝试了这个解决方案并且它有效。

于 2019-10-16T19:58:05.637 回答