同时计算多个集合中的文档数

我想同时计算三个独立 MongoDB 集合中的文档数量。我现在所拥有的可以工作,但速度很慢。谁能帮我优化一下吗?


app.post('/fetch-numbers',(req, res) => {

  let numbers = {};

  Clinic.countDocuments({})

  .then(clinicCount => {

    numbers.clinicCount = clinicCount;

    Dentist.countDocuments({})

    .then(dentistCount => {

      numbers.dentistCount = dentistCount;

      Booking.countDocuments({})

      .then(bookingCount => {

        numbers.bookingCount = bookingCount;

        res.json(numbers)

      })

    })

  })

  .catch(err => {

    res.json(err)

  });

});


慕妹3146593
浏览 81回答 1
1回答

哔哔one

由于所有查询都是独立的,因此您可以使用 并行运行它们promise.all(),代码将如下所示:app.post('/fetch-numbers', async (req, res) => {    Promise.all([        Clinic.countDocuments({}),        Dentist.countDocuments({}),        Booking.countDocuments({})    ])    .then((docCounts) => {        const numbers = docCounts.reduce((a, b) => a + b, 0)        res.json(numbers);    })    .catch(err => res.json(err));    const numbers = docCounts.reduce((a, b) => a + b, 0)    res.json(numbers);});async-await您可以通过使用with进一步使其更具可读性Promise.all(),例如:app.post('/fetch-numbers', async (req, res) => {    try {        const docCounts = await Promise.all([            Clinic.countDocuments({}),            Dentist.countDocuments({}),            Booking.countDocuments({})        ]);        const numbers = docCounts.reduce((a, b) => a + b, 0)        res.json(numbers);    } catch(err) {        res.json(err);    }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript