【发布时间】:2020-07-13 21:12:33
【问题描述】:
拥有这个工作代码:
const aggregateOptions = [];
// search by name
if (req.query.name) {
aggregateOptions.push({ $match: { name: { $regex: req.query.name, $options: 'i' } } });
}
// search by surname
if (req.query.surname) {
aggregateOptions.push({ $match: { surname: req.query.surname } });
}
// search by nationality
if (req.query.nationality) {
aggregateOptions.push({ $match: { nationality: req.query.nationality } });
}
它负责构建用于搜索的查询。问题是它们是分开工作的,我希望能够将一个字符串写入搜索栏,并编写代码来搜索所有 3 个字段。
例如,现在有一个名称搜索栏,当我写“my_string”时,它只检查是否有一个 name="my_string" 并且我想检查所有这些。
类似 name="my_string" OR surname="my_string" OR nationality="my_string"。
所以我用 $or 写了这个:
aggregateOptions.push({
$or: [
{ nationality: req.query.nationality },
{ surname: req.query.surname },
{ name: { $regex: req.query.name, $options: 'i' } },
],
});
这似乎是错误的并返回此错误消息:“$or is not allowed in this atlas tier”
【问题讨论】:
标签: javascript node.js mongodb mongoose filter