andnot

介绍

  • 功能:封装多个并发查询并对结果集合进行差集运算的查询模式
  • 场景:我收藏的并且尚未购买的宝贝
  • 执行逻辑:遍历sub_search1的查询结果集合,如果某个结果的fieldname字段值在sub_search2的查询集合中也存在,那么丢弃该结果,否则留下该结果。

语法

sub_search1 andnot{andnot_clause} sub_search2
  • sub_search1和sub_search2
    • 二者均可以是atomic、join、merge、and以及andnot中的任意一种类型
    • 二者返回的结果可以是异构的
  • andnot:andnotfield=<fieldname>
    • fieldname指定进行差集运算的字段
    • fieldname必须在sub_search1和sub_search2的结果中同时存在,并且类型必须一样

示例

// 查找用户2和用户1购物车中不同种类的商品
search{table=userinfo&keys=2}andnot{andnotfield=catid}search{table=ig_ref_userbkt&keys=1}