gpt4 book ai didi

javascript - 如何从NodeJS下载Mongodb Collection

转载 作者:行者123 更新时间:2023-11-30 20:50:10 25 4
gpt4 key购买 nike

我有 Mongo 数据库,我想使用 NodeJs API 下载一个集合的所有寄存器。我想像 CSV 或类似的东西一样下载。目前我的收藏有 501426 个寄存器,所以当我调用 .find() 方法时它返回此错误:

<--- Last few GCs --->
[15092:000001FE5E775B70] 95966 ms: Mark-sweep 1407.6 (1467.7) -> 1407.5
(1451.2) MB, 1408.9 / 0.0 ms last resort GC in old space requested
[15092:000001FE5E775B70] 97421 ms: Mark-sweep 1407.5 (1451.2) -> 1407.5
(1451.2) MB, 1454.2 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 000003F5F89A5EE1 <JSObject>
2: GetHash(aka GetHash) [native collection.js:1] [bytecode=000003F5F89D1721
offset=51](this=0000011364082311 <undefined>,o=000002F6E28FAE89 <JSFunction
wrapper (sfi = 000003167E337821)>)
4: set [native weak-collection.js:1] [bytecode=000003167E3380F9 offset=50]
(this=000001DB08591699 <JSWeakMap>,key=000002F6E28FAE89 <JSFunction wrapper
(sfi = 000003167E337821)>,value=00000021B54F67F9 <J...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

我的代码是这样的:

Collection.find({}).then(function(logs) {
res.charset = 'utf-8';
res.setHeader('Content-disposition', 'attachment; filename=' + 'filename.csv');
res.setHeader('content-type', 'text/csv');
csv
.write(logs, {
headers: true,
transform: function(row) {
return {
'Nivel': row.level,
'Metodo': row.method,
'IP': row.ip,
'URL': row.url,
'Status Code': row['status-code'],
'Usuario': row.user_email.email,
'Fecha': row.createdAt,
'Cuerpo': row.req_body,
'Consulta': row.req_query,
'Navegador': row['user-agent'],
'Datos Usuario': row.user_email,
'Aplicacion': row.referrer
};
}
})
.pipe(res);
})

此代码有效,但我想下载 Collection 的所有文档。对不起我的英语。

谢谢

最佳答案

与其一次性转换/解析内存,不如一个接一个地处理。为此,我们首先需要一个流,我们可以将数据写入:

 var csvStream = csv.createWriteStream({headers: true}),
csvStream.pipe(res); // directly pipe it to the user

然后我们可以逐个文档读取集合文档,并将其通过管道传递给 csv 转换器:

 Collection.find({}).stream({
transform(row){
return {
'Nivel': row.level,
'Metodo': row.method,
'IP': row.ip,
'URL': row.url,
'Status Code': row['status-code'],
'Usuario': row.user_email.email,
'Fecha': row.createdAt,
'Cuerpo': row.req_body,
'Consulta': row.req_query,
'Navegador': row['user-agent'],
'Datos Usuario': row.user_email,
'Aplicacion': row.referrer
};
}
}).pipe(csvStream);

关于javascript - 如何从NodeJS下载Mongodb Collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48266334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com