Javascript - 从多个集合中从 mongodb 收集数据然后合并到数组中

标签 javascript node.js mongodb merge

我想从多个集合中获取最新的对象,并将所有对象保存到一个数组中,以集合名称作为键,最新的对象作为值。

如何顺序或异步实现此目的?

        let dat = ["test", "test2"];
        let merged = [];

        dat.map((collName) => {
          const promise = new Promise((resolve, reject) => {
            db.collection(collName).find().sort({ timestamp: -1 }).limit(1).forEach((d) => {
              resolve(d);
            });
          })
          .then((result) => {
            merged.push(result);
          });

        console.log(merged);

最后的日志给了我一个空数组。

最佳答案

您可以尝试使用 async/await 为:

let dat = ["test", "test2"];

const promises = dat.map(async (collName) => {
    try {
        const data = await db.collection(collName)
             .find({})
             .sort({ timestamp: -1 })
             .limit(1)
             .toArray();
        return data[0];
    } catch(err) {
        console.error(err);
    }
});

(async () => {
    const merged = await Promise.all(promises);
    console.log(merged);
})();

关于Javascript - 从多个集合中从 mongodb 收集数据然后合并到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709917/

相关文章:

Javascript:使用直接内联函数创建对象数组

javascript - React JS,停止生产中显示错误

CSS 样式表无法连接到 C9 平台上的 node.js 页面

node.js - Loopback - 如何获取用户的ID并插入到相关模型中? (有很多)

node.js - 如何在json数组mongoose中查找json对象

mongodb - 查找最近 n 天内的所有文档

javascript - 将 Mongoose 模式导入另一个模式文件使导入的模式未定义

javascript - 粘性褪色导航栏即将出现

javascript - 关于嵌套函数中的 JavaScript var 作用域,Intellisense 告诉我什么?

javascript - 在 Vue.js 中使用 HighCharts 绘制 json 图表