如何使用值数组过滤JSON字段 排除指定manufacturerID查询结果
按ID数组排除匹配结果的实现方式
你当前写的查询逻辑本身是对的,核心靠not搭配in的条件组合就能实现批量排除:
- 提前把要排除的所有manufacturerID整理成数组,传到
not.in的条件值里,就会自动过滤掉ID命中这个数组的所有记录,你现在写的排除["28", "266", "213", "234"]这几个ID的逻辑完全符合需求。 - 唯一要注意的是值类型要匹配:如果库里存的manufacturerID是数字类型,就别给排除列表里的值加引号传字符串,不然类型对不上,过滤会失效。
JSON字段是否支持该过滤操作
完全支持,不需要额外做特殊处理:
- 只要通过
path参数写对JSON字段里的属性层级就行,你现在写的path: ["manufacturerID"]就是指定取Manufacturer字段下的manufacturerID属性做过滤目标,写法是对的。 - 如果属性有多层嵌套,比如manufacturerID藏在Manufacturer字段下的info子层里,就把path改成
["info", "manufacturerID"],按实际存储的层级顺次填路径就能正常过滤。
你当前尝试的查询写法如下,在支持文档型JSON路径查询的存储引擎(比如MongoDB、PostgreSQL的JSONB字段、主流文档类搜索引擎)里都能正常运行,实现预期的排除效果:
{ Manufacturer: { path: ["manufacturerID"], not: { in: ["28", "266", "213", "234"] }, }, }
内容的提问来源于stack exchange,提问作者Darryl Morley
相关产品推荐
相关产品推荐

