【问题标题】:How to process millions in a file inside Mongo shell with Javascript?如何使用 Javascript 在 Mongo shell 中处理数百万个文件?
【发布时间】:2019-09-16 07:26:59
【问题描述】:

可以说,我的文件有以下内容,位于 /home/usr1/Documents/companyNames.txt

姓名1

名字 2

名字 3

数以百万计的名字...

我尝试了以下代码:

$> var string = cat('home/usr1/Documents/companyNames.txt');
$> string = string.split('\n');
$> db.records.find({field: {$in: string}});

根据链接Can I read a csv file inside of a Mongo Shell Javascript file?中的代码

这在文件很小的情况下有效,但当文件有数百万行时它会失败。文件中的整行都试图装入内存并崩溃。有没有其他方法可以在 Mongo shell 中使用 Java 脚本处理大文件?

【问题讨论】:

    标签: javascript mongodb mongo-shell


    【解决方案1】:

    Mongo 不太擅长处理大型查询。

    您可能必须采用 Javascript 方式:

    var string = cat('home/usr1/Documents/companyNames.txt');
    string = string.split('\n');
    let results = [];
    string.forEach(string => result.push(db.records.find({field: {$eq: string}})));
    

    【讨论】:

    • 第一行后内存崩溃。我的文件中有超过 100 万行。
    • 在外部将文件分割成合理大小的多个部分并对其进行迭代?无论如何,即使是中等大小的数组,我也会避免使用 '$in'。
    • 这会使我的工作加倍,我将文件加载到另一个集合中。无法在 mongo shell 中加载大文件,我想这是不可能的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    相关资源
    最近更新 更多