如何在Mongoose和Nddejs中使用$ elemMatch设置默认值

时间:2018-10-08 20:43:11

标签: node.js mongodb mongoose

我已经路由过,该路由应该基于3个输入来过滤我的文件-并且可行。

app.get("/api/getFiles", (req, res) => {
  let grade = req.query.grade;
  let study = req.query.study;
  let subject = req.query.subject;

  User.find(
    { files: { $elemMatch: { study: study, subject: subject, grade: grade } } },
    (err, doc) => {
      if (err) res.status(400).send(err);
      res.send(doc);
    }
  );
});

但是,这些输入并不相互依赖。

E.G if grade = 5函数应返回与特定等级匹配的文件,而不管其study还是subject

在这种情况下,$elemMatch中是否有任何默认值将获取所有文件,而不管它们是study还是subject

1 个答案:

答案 0 :(得分:1)

$ elemMatch没有默认值,您只需要在代码中编写自定义条件

app.get("/api/getFiles", (req, res) => {
  let grade = req.query.grade;
  let study = req.query.study;
  let subject = req.query.subject;

  if grade == 5:{
  User.find(
    { files: { $elemMatch: {grade: 5 } } },
    (err, doc) => {
      if (err) res.status(400).send(err);
      res.send(doc);
    }
  );}
  else: {
  User.find(
    { files: { $elemMatch: { study: study, subject: subject, grade: grade } } },
    (err, doc) => {
      if (err) res.status(400).send(err);
      res.send(doc);
    }
  );}
});