Javascript 将筛选文档从Mongo集合传输到另一个集合的最佳方式(在nodejs中)

Javascript 将筛选文档从Mongo集合传输到另一个集合的最佳方式(在nodejs中),javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我需要过滤一个大的MongoDB集合(今天,3500000个文档,明天,更多…),并将其中的一些内容转移到一个空集合中。以下是我的ES6幼稚方法: 等待col_target.drop(); const cursor=wait col_source.find(); while(等待cursor.hasNext()){ const doc=wait cursor.next(); //筛选器是正则表达式的数组和数组 如果(!regex.map(=>newregexp(,'imu').test(doc

我需要过滤一个大的MongoDB集合(今天,3500000个文档,明天,更多…),并将其中的一些内容转移到一个空集合中。以下是我的ES6幼稚方法:

等待col_target.drop();
const cursor=wait col_source.find();
while(等待cursor.hasNext()){
const doc=wait cursor.next();
//筛选器是正则表达式的数组和数组
如果(!regex.map(=>newregexp(,'imu').test(doc.rawJson.text)).reduce((a,b)=>a | | b))继续;
等待col_target.insertOne(prepareTweet(doc));
}

等待db.close()您应该在单个查询中执行此操作,这样会更快

db.col_source.aggregate([
    {$match: {rawJson: /someRegex/gi }},
    {$out: "col_target"}
])

当然,别忘了在
rawJson
字段上创建一个不太清楚的字段。您能否提供示例文档,并稍微解释一下您需要传输哪些文档?每个文档都有相同的结构:-Mongo_id字段-一个rawJson字段,其中包含Twitter stream API给出的tweet。我想根据推文的文本过滤源集合中的推文,并将其存储到目标集合中。但是,我看不出文档的结构与我的问题有什么关系,问题更多的是关于程序的“流程:),如果过滤行是:if(Math.random()<0.5)continue;;)非常感谢您的回答,我将尝试实现它,事实上,我的代码很慢,因为js“测试”。。。我可以更好地利用MongoDB引擎。好的,完成了。出色的性能改进!再次感谢菲利克斯。