mongoose具有多种条件的“查找”

时间:2015-11-10 09:55:17

标签: javascript node.js mongodb mongoose

我试图通过使用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);

});
});

如何在mongoose中放入一些条件,它会返回包含“region”&&amp ;;对象中的“扇区”。目前只返回其中包含region关键字的用户。

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

4 个答案:

答案 0 :(得分:39)

$or

如果您想要任何一个地区的数据:" NA"或扇区:"某些部门"。您可以使用User.find({$or:[{region: "NA"},{sector:"Some Sector"}]}, function(err, user) { if (err) { res.send(err); } console.log(user); res.json(user); }); 运算符。

{{1}}

答案 1 :(得分:6)

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

只要您搜索不同的字段,

,就相当于$and

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

 if (user) {
   // DO YOUR THING
 }

});