MongoDB如何将两个$or查询条件通过$and逻辑符合并?
修正方案
你原有写法不生效的核心原因是先后两次给query.$or赋值,后一次赋值会直接覆盖前一次的OR条件,导致第一个匹配逻辑丢失,若之前赋值的$or字段未清理,也会和后续的$and逻辑产生冲突。
可直接运行的代码(完整保留option1、option2原有写法)
// 保留option1原有逻辑,单独存储为变量 const option1 = [{ title: searchWord }, { content: searchWord }]; // 保留option2原有逻辑,单独存储为变量,注意两个category请替换为你实际要匹配的两个不同分类值 const option2 = [{ category: categoryA }, { category: categoryB }]; // 清空原有query避免旧字段干扰,合并为需要的AND逻辑 query = {}; query.$and = [ { $or: option1 }, { $or: option2 } ];
逻辑说明
上述写法完全符合MongoDB查询语法,最终执行的逻辑和你要求的规则完全一致:
(title匹配搜索词 OR content匹配搜索词) AND (分类匹配第一个值 OR 分类匹配第二个值)
内容的提问来源于stack exchange,提问作者shinbian11
相关产品推荐
相关产品推荐

