我试图通过使用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关键字的用户。
我尝试过使用$和运算符,但我无法使用它。
答案 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
}
});