2015-02-24 98 views
-1

我有两个集合,LogData和OptData。 LogData只有600条记录,而OptData有大约300万条记录。为了创建一些逻辑数据,我试图合并两个收集器。但只需使用mongo命令进行合并即可创建大小超过16 MB的文档。在GridFs(MongoDb)中创建文件

我可以使用GridF合并文件吗?

我的收藏就像

LogData 
[{ 
    "SId": 10, 
    "NoOfDaya" : 9 
    } 
{ 
"SId": 11, 
"NoOfDaya" : 8 
}] 



OptData 
[ { 
    "SId": 10, 
    "CId": 12 
    } 

{ 
"SId": 10, 
"CId": 13 
    }] 

我想是这样

LogData 
[{ 
    "SId": 10, 
    "NoOfDaya" : 9 
    "OptData" : [{ 
     "CId": 12 
    },{ 
    "CId": 13 
    } 
    ] 
    } 
    { 
     "SId": 11, 
    "NoOfDaya" : 8, 
    "OptData" : [] 
}] 

我能够使用MongoDB的find命令要做到这一点,但它创建的文档尺寸大于16个mb.Is可能使用mongodb GridFS来做到这一点?

+0

无论你在做什么,如果你的文档甚至远远接近16MB的大小限制,你几乎可以肯定是做错了。不,您不能将大量的结构化文档保存为文件,并期望它们现在就好像它们不是文件一样。 GridFS只是一个简单的方法来组合'byte []'数据。 – mnemosyn 2015-02-24 14:38:24

回答

1

您可以尝试将整个文档存储为GridF上JSON或BSON二进制字符串的文本字符串,但这可能不是您想要的,因为当您在GridFS中存储数据时,MongoDB将它视为一个无意义的blob数据并且不能对其执行任何有用的查询。

现在将数据标准化为两个集合会更好。当这给你造成一个特定的问题时,你可以在一个新问题中描述这个问题。我们可能会建议你一个更实用的解决方案。

+0

在当前场景中,我有两个集合。 Collection1是OptData(它拥有约9000万条记录)。 Collection2 LogData(它只有600条记录)。我们会根据一些计算定期更新LogData。这里的问题是,由于mongoDB不允许,我不能在这里应用连接。自记录超过16 MB以来,我无法合并两个集合。 – sangita 2015-02-25 05:36:21

+0

@sangita这个问题太复杂了,无法通过评论来解决。请创建一个新问题并准确解释您需要执行哪些查询。 – Philipp 2015-02-25 08:14:20

+0

我已经创建了另一个问题[链接](http://stackoverflow.com/questions/28714773/map-reduce-to-combine-data-mongodb)。让我知道是否有任何事情仍然不清楚。 – sangita 2015-02-25 08:56:27