Weaviate嵌套对象Reference过滤结果不符合预期求助
Weaviate Reference过滤器查询结果不符合预期的解决方法
你的问题出在当前的查询逻辑上:And操作符是针对整个用户对象的两个独立条件——只要用户名下存在任意一辆车是Saturn,并且存在任意一辆车是Imprezza(不管是不是同一辆),就会被匹配。Zach的对象里刚好有一辆Saturn的车和一辆Imprezza的车,所以被误命中了。
要实现“筛选出拥有同一辆车同时满足make=Saturn且model=Imprezza的用户”,需要用Nested操作符把两个条件绑定到同一个car对象层级下,确保两个条件作用于同一辆汽车。
正确的查询语句如下:
where: { operator: Nested, path: ["car"], inner: { operator: And, operands: [ { path: ["Car_class", "make"], operator: Equal, valueText: "Saturn" }, { path: ["Car_class", "model"], operator: Equal, valueText: "Imprezza" } ] } }
说明:
Nested操作符指定要针对car这个嵌套数组进行内部条件判断inner里的And操作符确保同一辆car对象同时满足make和model的条件- 内部条件的path不再需要包含
car,因为已经在Nested的path里指定了层级
这样查询就只会返回name为Bob的对象,符合你的预期。
内容的提问来源于stack exchange,提问作者zakaria hamdane
相关产品推荐
相关产品推荐

