比较具有不同文档结构的mongoDB大型集合的最佳选择。查找缺少的元素

比较具有不同文档结构的mongoDB大型集合的最佳选择。查找缺少的元素,mongodb,bigdata,Mongodb,Bigdata,我需要在两个不同的巨大mongoDB集合之间找到丢失的文档 第一个集合是数据本身,第二个集合类似于信息较少的审计集合 其基本思想是用户可以浏览多个列表并打开或关闭其中的项目。我们将这些数据存储在一个集合中(每个UserID/ListID/ItemID组合一个文档),在另一个集合中,我们将用户打开和关闭的所有项目存储在一个集合列表中(每个UserID/ListID一个文档) 首次收款文件(~1.500.000.000): ObjectID使用的是一个24个字符长的字符串。计算:listID(8个

我需要在两个不同的巨大mongoDB集合之间找到丢失的文档

第一个集合是数据本身,第二个集合类似于信息较少的审计集合

其基本思想是用户可以浏览多个列表并打开或关闭其中的项目。我们将这些数据存储在一个集合中(每个UserID/ListID/ItemID组合一个文档),在另一个集合中,我们将用户打开和关闭的所有项目存储在一个集合列表中(每个UserID/ListID一个文档)

首次收款文件(~1.500.000.000):

ObjectID使用的是一个24个字符长的字符串。计算:listID(8个字符)+itemID(8个字符)+userID(8个字符)

状态为ON或OFF(可以将其视为布尔值)

有更多的数据,但并不重要

第二次收集(审计)文件(~200.000.000):

ObjectId再次使用24个字符的字符串。在本例中,使用:00000000+ListId(8个字符)+userID(8个字符)计算

在本例中,我们为每个用户/列表组合保存一个文档,并添加两个集合,一个集合包含ON项的所有ItemID,另一个集合包含OFF项的所有ItemID


正如我所说,这些藏品数量巨大。 第一个集合约有1500.000.000个文档,第二个集合(审计)约有200.000.000个文档

我必须从另一个集合中找到每个集合中缺少的所有项目

我从来没有处理过这样的问题(实际上这是我第一次使用mongo),有人告诉我,我可以使用我想要的大小的GCP机器(数百个CPU,几TB的RAM),如果需要几天就可以了

我通常使用java(和spring)来工作,但我对其他语言、选项持开放态度,使用几个较小的进程

我做了一些概念验证,但需要很长时间,因为他们必须对远程服务器(mongo)执行大量的查询,从一个mongo db读取所有数据,并为每个项目查询另一个数据库,然后以相同但相反的方式(我将把MongoDB复制到虚拟机以加快速度)

我还尝试将所有数据加载到地图和集合中,但这也带来了很多问题

任何想法都会受到欢迎