没有插入mongoDB的文件?

时间:2016-09-02 05:27:36

标签: ruby mongodb list upsert uniq

我在Ubuntu AWS实例上设置了一个mongoDB。我还有类似920个文件,大小从5Mb到2Gb左右。

每个解压缩的文本文件都与db.getCollection('hashes').count({})一致,我运行以下脚本将它们插入到数据库中:

3788104

这个想法是,如果记录已经存在,df会将计数设置为2或3,这样我就可以通过稍后在DB上运行查询来找到所有重复项。

我通过RoboMongo连接到实例,并且每次刷新以下查询时都会这样做:

upsert

我发现它很快就填满了数据库。有很多文件,但我想我会在一夜之间离开。

enter image description here

然而,经过一段时间后,结果卡在.each_line。我担心有一些硬限制(filedetails.cpp说我只使用了35%的硬盘空间)

配置文件中是否存在自动限制可插入记录数量的内容?

PS:它只是我还是**memory full. unable to edit file** q非常慢?

1 个答案:

答案 0 :(得分:0)

MongoDB的更新模型基于写入问题,这意味着单独调用函数updateOne并不能保证成功。

如果MongoDB的版本至少为2.6,则函数updateOne将返回包含任何错误信息的文档。如果MongoDB的版本较旧,则显式调用getLastError命令将返回可能有错误的文档。

如果数据库不包含所有需要的文档,则返回的文档可能包含错误。

在这两种情况下,可以将写入问题调整到所需的级别,即控制有多少mongo实例必须传播该变化才能被认为是成功。

(注意:我不熟悉Ruby驱动程序,假设它的行为与shell类似)。