[英]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.