繁体   English   中英

猫鼬“查找”具有多种条件

[英]mongoose "Find" with multiple conditions

我正在尝试使用 mongoose 过滤器从我的 mongoDB 数据库中获取数据。 场景是数据库中的每个用户对象都有某些字段,如"Region""Sector"

目前,我正在获取所有在对象中包含关键字“区域”的用户,如下所示:

 // Filter all healthcare bios by region
 app.get('/user',function(req, res) {

 // use mongoose to get all users in the database
 User.find({region: "NA"}, function(err, user) 
 {
    // if there is an error retrieving, send the error. nothing after res.send(err) will execute
    if (err)
    {
        res.send(err);
    }
    // return all todos in JSON format
    console.log(user);
    res.json(user);

});
});

如何在 mongoose 中放置一些条件,使其返回在其对象中同时包含“区域”和“扇区”的用户。 目前它只返回包含 region 关键字的用户。

我曾尝试使用 $and 运算符,但无法使其正常工作。

app.get('/user',function(req, res) {

 User.find({region: "NA",sector:"Some Sector"}, function(err, user) 
 {
    if (err)
    {
        res.send(err);
    }
    console.log(user);
    res.json(user);

 });
});

如果您想要带有区域:“NA”或扇区:“某些扇区”的数据。 您可以使用$or运算符。

User.find({$or:[{region: "NA"},{sector:"Some Sector"}]}, function(err, user) 
 {
    if (err)
    {
        res.send(err);
    }
    console.log(user);
    res.json(user);

 });

如果您想要包含任何区域或扇区的结果,只要两者同时存在,您需要在User.find进行以下查询: {region: {$exists:true},sector: {$exists:true}}

,相当于$and只要您搜索不同的字段。

  const dateBetweenDates = await Model.find({
    $or: [
      {
    $and: [
      { From: { $gte: DateFrom } },
      { To: { $lte: DateTo } },
    ],    // and operator body finishes
    },
      { _id: req.user.id},
    ], //Or operator body finishes
  })

对于尝试使用 mongoose 在多个条件下查找的其他人,这里是使用 async/await 的代码。

app.get('/user', async (req, res) {

 const user = await User.find({region: "NA",sector:"Some Sector"});

 if (user) {
   // DO YOUR THING
 }

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM