我在Ubuntu AWS实例上设置了一个mongoDB。我还有类似920个文件,大小从5Mb到2Gb左右。
每个解压缩的文本文件都与db.getCollection('hashes').count({})
一致,我运行以下脚本将它们插入到数据库中:
3788104
这个想法是,如果记录已经存在,df
会将计数设置为2或3,这样我就可以通过稍后在DB上运行查询来找到所有重复项。
我通过RoboMongo连接到实例,并且每次刷新以下查询时都会这样做:
upsert
我发现它很快就填满了数据库。有很多文件,但我想我会在一夜之间离开。
然而,经过一段时间后,结果卡在.each_line
。我担心有一些硬限制(filedetails.cpp
说我只使用了35%的硬盘空间)
PS:它只是我还是**memory full. unable to edit file**
或q
非常慢?
答案 0 :(得分:0)
MongoDB的更新模型基于写入问题,这意味着单独调用函数updateOne
并不能保证成功。
如果MongoDB的版本至少为2.6,则函数updateOne
将返回包含任何错误信息的文档。如果MongoDB的版本较旧,则显式调用getLastError
命令将返回可能有错误的文档。
如果数据库不包含所有需要的文档,则返回的文档可能包含错误。
在这两种情况下,可以将写入问题调整到所需的级别,即控制有多少mongo实例必须传播该变化才能被认为是成功。
(注意:我不熟悉Ruby驱动程序,假设它的行为与shell类似)。