有一个搜索对一列很好,我想让它在两列(更多)中检查引入的字符串。
这是它的工作原理之一:
if (req.query.name) {
aggregateOptions.push({ $match: { name: { $regex: req.query.name, $options: 'i' } } });
}
因此它检查引入的字符串/子字符串是否存在于name列中,并过滤掉没有它的列。
我想添加这也为城市栏。 所以它检查引入的字符串是否出现在name或city列中,它不一定要出现在两个列中,只出现在其中一个就可以了。
因此我使用$或
:
if (req.query.name) {
aggregateOptions.push({
$or: [
{ $match: { name: { $regex: req.query.name, $options: 'i' } } },
{ $match: { city: { $regex: req.query.city, $options: 'i' } } },
],
});
}
这似乎是错误的,因为当在搜索框中引入字符串时,它不过滤任何内容,并返回错误400和“$OR不允许在此atlas Tier中”
。
这个怎么解决?
你很亲密的。 但是$或在错误的级别上
if (req.query.name) {
aggregateOptions.push({
$match: {
$or: [
{ name: { $regex: req.query.name, $options: 'i' } },
{ city: { $regex: req.query.city, $options: 'i' } },
],
}
});
}