Ros*_*jan 2 arrays collections mongodb
我有一个问题,但在我看来,我见过的所有解决方案都在解决比我更复杂的问题。
我对 MongoDB 比较陌生,但我一直将它与 Apache Nutch 一起使用来存储爬网文档。当我分阶段爬行并以不同方式评估每个爬行结果时,为了获取统计信息,我一直将结果存储在不同的集合中。
我想做的就是将这些集合整合到一个大集合中,以便我可以翻译和分类。所有字段都是相同的,因此我不需要添加任何新字段。
这是我一直在每个集合中使用的插入查询:
new_crawl_130422_data.insert_one(
{
"database_url": proj_database_url,
"database_project_id": proj_database_id,
"projectname": proj_database_name,
"version": version,
"boost": boost,
"content": content,
"digest": digest,
"title": title,
"timestamp": timestamp,
"url": website,
"language": language
}
Run Code Online (Sandbox Code Playgroud)
因此,集合 1 和集合 2 具有相同的字段。显然,每个集合中会有多个具有相同内容的文档,database_project_id这些文档是根据匹配的 url 映射的记录,并且它们是从 Solr 传输的。如果项目名称和 url 匹配,则为该文档分配 project_id,以表明它包含该项目的数据。
我认为可以像列表一样将一个集合添加到另一个集合的末尾,但我已经查看了这些解决方案 -将集合中的一些文档复制到 mongo DB 中的另一个集合,将一个集合中的所有文档插入到MongoDB 数据库中的另一个集合,Spring data mongodb-复制一个集合,它们似乎都在做比我需要的更复杂的事情。
我不想更改任何集合,只需通过将两个或多个集合放在一起来创建一个大集合。
我也看到了这个 - https://www.mongodb.com/docs/v4.2/reference/method/db.collection.copyTo/,但它已被弃用。
提前致谢。
如果您想复制所有数据,只需运行:
db.new_crawl_130422_data.aggregate([
{$out: "secondCollection"}
])
Run Code Online (Sandbox Code Playgroud)
请注意,所有现有数据都secondCollection将被删除。如果您想添加,即合并文档并保留现有数据,请使用:
db.new_crawl_130422_data.aggregate([
{$merge: "secondCollection"}
])
Run Code Online (Sandbox Code Playgroud)
如果您有一个大型数据集,请参阅如何将集合从一个数据库复制到 MongoDB 中的另一个数据库
| 归档时间: |
|
| 查看次数: |
5701 次 |
| 最近记录: |