node.js - 大集合batchSize的mongoDB查询
问题描述
我正在尝试从我的集合中查询并打印出结果,但它太大并且批处理只返回前几百个左右的结果。
我尝试使用 batchSize 来提高限制,但每次尝试将其实现到脚本中时都会出错。
我期望的结果数量约为 15000 条记录。
我正在运行 .js 脚本,如下所示:
db = db.getSiblingDB('local');
print("START");
result = (db.idlsfcontractroles.aggregate([
{"$lookup":{
"from":"idlsfcontracts",
"localField":"Contract__r_ExternalId__c",
"foreignField":"ExternalId__c",
"as":"Con"
}},
{"$unwind":"$Con"},
{"$match":{"Con.Status__c":1,"Con.Type__c":1,"Con.ConductingCompany__c":9}},
{"$group":{"_id":"$Account__r_MDMExternalId__c"}}
]));
printjson(result);
解决方案
使用跳过/限制来翻阅您的结果,直到完成。
var skip = 0;
do {
result = (db.idlsfcontractroles.aggregate([
{"$lookup":{
"from":"idlsfcontracts",
"localField":"Contract__r_ExternalId__c",
"foreignField":"ExternalId__c",
"as":"Con"
}},
{"$unwind":"$Con"},
{"$skip": skip},
{"$limit": 100},
{"$match":
{"Con.Status__c":1,"Con.Type__c":1,"Con.ConductingCompany__c":9}},
{"$group":{"_id":"$Account__r_MDMExternalId__c"}}
]))
printjson(result);
skip += 100;
} while (result)
推荐阅读
- node.js - 响应是空对象或来自 Nodejs 位置 0 的 JSON 中的 Unexpected token <
- swiftui - SwiftUI PresentationButton 在 watchOS 上单次使用后停止运行
- php - 如何使用货币(WHMCS)在模板中显示产品价格
- php - 使用 AJAX 将表单数据发送到 PHP 脚本并在不刷新页面的情况下弹出成功通知
- swift - 我们可以在警卫中进行功能返回类型条件检查吗?
- xml - 如何输出
- 和
- 从 XML 到 XSL 的元素?
- javascript - D3 V4:更新的数据被视为新数据?(更新功能)
- python - Pyinstaller 构建应用后设计变得丑陋
- python - 无法在 python 列表中将 str 转换为 int
- qt - 如何修复“在 Qt 中将两个定时器变为一个函数,使用 qmutex 将 qeventloop 进行睡眠”