Mongoose eachAsync最大调用堆栈大小超过

时间:2018-03-20 12:56:57

标签: mongoose cursor aggregate

我正在为35000个元素的集合实现聚合,并且我的服务器中的最大调用堆栈大小超过了。它在我的电脑上运行良好。这是代码:

let query = [];
if (!lodash.isEmpty(conditions)) {
    query.push({$match: conditions});
}
query.push(
    {$lookup: {
        from: 'projects',
        localField: '_id',
        foreignField: 'user',
        as: 'projects'
    }},
    {$sort: {internalCode: 1}}
);

db.User.aggregate(query)
    .allowDiskUse(true)
    .cursor({batchSize: 1000})
    .exec()
    .eachAsync((user) => {
        writer.addRow({
            'ID': user.internalCode,
            'Apellido': user.lastName,
            'Nombre/s': user.firstName,
            'Género': {female: 'Femenino', male: 'Masculino'}[user.gender],
            'Fecha de Nacimiento': user.birthdate,
            'DNI': user.dni,
            'Provincia': user.location.province,
            'Dirección': user.location.address + ' ' + user.location.number,
            'Piso/Departamento': (user.location.floor || '-') + ' / ' + (user.location.apartment || '-'),
            'Email': user.email,
            'Teléfono': user.phone,
            'Celular': user.mobile,
            'Proyecto': user.projects.length ? user.projects[0].name : '',
            'Deshabilitado': user.disabled ? 'SÍ' : 'NO'
        });
    }, {parallel: 1000})
    .then(() => {
        writer.finalize();
    })
    .catch(next);

0 个答案:

没有答案