如何解决无法在 nodejs+mongodb
我尝试创建一个 cron
作业,该作业从一个集合中获取数据并使用聚合方法执行一些操作,最后将输出转储到同一数据库中的另一个集合(使用 $merge
)。如果我在 mongo shell 中尝试聚合代码,那么 $merge
会成功发生。但是当它在 cron 作业中完成时,我可以看到正在执行聚合,但结果没有转储到目标集合(应该由 $merge
完成)。
这是我尝试实现的代码
const CronJob = require('cron').CronJob;
const job = new CronJob( '* * * * *',() => {
console.log('Cron Job started');
dbColl.aggregate([
-----------------
some calculations
-----------------
{ $merge: { into: { db: 'db-name',coll: 'collection-name' } } }
],(err,docs) => {
if(!err && docs){
console.log('Cron Job ended');
console.log(docs); //I'm getting the correct output for the docs
}
})
})
结果
Cron Job started
Cron Job ended
{
---docs---
}
注意:聚合函数没有问题,因为我已经在 mongo shell 中对其进行了测试。在 cron 作业中执行聚合函数时会出现此问题
解决方法
合并选项不起作用。但是我使用了聚合方法的回调函数并更新了结果
dbColl.aggregate([
-----------------
some calculations
-----------------
{ $merge: { into: { db: 'db-name',coll: 'collection-name' } } }
],(err,docs) => {
if(!err && docs){
db.collection.updateMany(docs);
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。