mongoose"查找"有多种条件

Sky*_*ker 17 javascript mongoose mongodb node.js

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

目前我正在获取包含关键字"region"的所有用户,如下所示:

 // 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);

});
});
Run Code Online (Sandbox Code Playgroud)

如何在mongoose中放置一些条件,它返回在对象中包含"region"&&"Sector"的用户.目前它只返回其中包含region关键字的用户.

我尝试过使用$和运算符,但我无法使用它.

Vis*_*hnu 49

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);

 });
});
Run Code Online (Sandbox Code Playgroud)

如果您想要任何区域的数据:"NA"或扇区:"某个扇区".你可以使用$or运营商.

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

 });
Run Code Online (Sandbox Code Playgroud)


Ron*_*len 8

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

,$and只要您要搜索其他字段,就等于。


小智 8

  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
  })
Run Code Online (Sandbox Code Playgroud)

  • 给出答案时,尽量在代码中附上解释,以便其他人更好地理解逻辑。请参阅[如何回答](https://stackoverflow.com/help/how-to-answer) (8认同)