如何在mongoose中搜索所有集合中的查询

如何在mongoose中搜索所有集合中的查询,mongoose,Mongoose,我的mongodb数据库中有6个集合。假设6个集合的名称为“A”、“B”、“C”、“D”、“E”和“F”。所有这些集合都有标题字段。我想在标题栏中搜索所有集合中的文本。我的代码是: router.get("/home", async (req, res) => { if (req.query.search) { let result = []; const collections = ['A', 'B', 'C', 'D', 'E', 'F'];

我的mongodb数据库中有6个集合。假设6个集合的名称为“A”、“B”、“C”、“D”、“E”和“F”。所有这些集合都有标题字段。我想在标题栏中搜索所有集合中的文本。我的代码是:

router.get("/home", async (req, res) => {
   if (req.query.search) {
      let result = [];
      const collections = ['A', 'B', 'C', 'D', 'E', 'F'];
      const regex = new RegExp(escapeRegex(req.query.search), 'gi');

      for (let collection of collections) {
         let group = mongoose.model(collection);
         result.push(...await group.find({ 'title': regex }));
      }
      res.render("public/hadith.ejs", { search: result});
   }
});

function escapeRegex(text) {
   return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};

我正在使用正则表达式修改搜索文本。这对我很有用。有谁能告诉我这是好的还是坏的方法,还是比这更好的方法。

首先,在nodejs和mongodb中,始终避免这种情况,即必须合并多个集合的数据,因为这会影响性能并破坏mongodb的用途。 同时,join操作有$lookup操作符,但在频繁的查询中尽量避免使用它。 关于这个问题,做每个集合的查询比加入更好。因此,我认为从性能角度来看,这很好,只要记住对每个集合中的键(“标题”)进行索引(文本索引),并巧妙地使用通配符即可。 在上述条件下,如果标题不在集合中,它将在数组中插入空值,请更正它