过滤器(Filter)可以在服务器端对读取的结果再进行一次过滤,根据Filter中的条件决定返回哪些行或列。Filter可以用于GetRow、BatchGetRow和GetRange接口。

过滤器类型

目前表格存储支持以下两种Filter,这两种Filter都是基于参考列的列值决定是否过滤某行。
  • SingleColumnCondition:只判断某个参考列的列值。
  • CompositeCondition:对多个参考列的列值的判断结果进行逻辑组合,决定最终是否过滤。
说明 Filter是对读取后的结果再进行一次过滤,所以Filter中的参考列必须在读取的结果内。如果指定了要读取的列,且其中不包含参考列,则Filter无法获得这些参考列的值。当某个参考列不存在时,SingleColumnCondition的passIfMissing参数决定此时是否满足条件,即可以选择当参考列不存在时的行为。

示例

  • 构造SingleColumnCondition
    function getRowWithCondition() {
      //当col1 = 表格存储,返回改行。 passIfMissing为true表示如果这一列不存在也返回该行;为false表示这一列不存在就不返回该行。
      var condition = new TableStore.SingleColumnCondition('col1', '表格存储', TableStore.ComparatorType.EQUAL,true);
    
      params.columnFilter = condition;
      client.getRow(params, function (err, data) {
        if (err) {
          console.log('error:', err);
          return;
        }
        console.log('success:', data);
      });
    }
  • 构造CompositeCondition
    function getRowWithCompositeCondition() {
      //设置过滤器,当col1 = 表格存储,且col5 = 123456789时,返回该行
      var condition = new TableStore.CompositeCondition(TableStore.LogicalOperator.AND);
      condition.addSubCondition(new TableStore.SingleColumnCondition('col1', '表格存储', TableStore.ComparatorType.EQUAL));
      condition.addSubCondition(new TableStore.SingleColumnCondition('col5', Long.fromNumber(123456789), TableStore.ComparatorType.EQUAL));
    
      params.columnFilter = condition;
      client.getRow(params, function (err, data) {
        if (err) {
          console.log('error:', err);
          return;
        }
        console.log('success:', data);
      });
    }