这是用于地图的,这样搜索“ fullName”将返回所有输入为fullName或AlternativeName的文档。这两个查询都是单独工作的,但是当放在$ or运算符中时,它表示$ or需要一个数组。仅当还添加了$ not运算符时,这种情况才会发生。
我认为,当搜索被标记为否定并且应用了$ not运算符时,它会将其中一个表达式解释为null
,因此它不被读取为数组?
searchMap对象的一部分:
fullName: (d, exact) => ({
$or: [
{ fullName: getRegExp(d, exact) },
{ alternateNames: { $elemMatch: { alternateName: getRegExp(d, exact) } } },
]
}),
仅当我们将搜索标记为“否定”时,这种情况才会发生:
if (queryItem.negative === true && queryItem._id !== "entry") {
for (let key in item) {
item[key] = { $not: item[key] };
}
}
...
理想情况下,否定搜索将返回所有输入都不是fullName或AlternativeName的文档。
答案 0 :(得分:0)
当item [key]是一个数组时发生错误。通过将键从$ or更改为$ nor来解决。