文档

关于 SequoiaDB

快速入门

快速入门之一键清理

安装

基本操作

数据模型

SQL引擎

FileSystem引擎

S3引擎

系统架构

数据库管理

连接器

驱动

参考手册

SequoiaDB Shell方法

概述

Global

Sdb

SecureSdb

SdbCS

SdbCollection

SdbCursor

SdbQuery

SdbReplicaGroup

SdbNode

SdbDomain

Oma

File

FileContent

Cmd

Remote

Hash

IniFile

Sdbtool

Ssh

System

辅助类型对象

特殊类型对象

操作符

SQL语法

SQL to SequoiaDB 映射表

限制

错误码

故障排除

SAC 管控中心

Web服务

版本信息

flags()

语法

query.flags( <flag> )

类别

SdbQuery

描述

按指定的标志位遍历结果集。

参数

参数名 参数类型 默认值 描述 是否必填
flag 枚举 --- 标志位

flag 参数的可选值如下表:

可选值 描述
SDB_FLG_QUERY_FORCE_HINT 当添加该标志位之后,将强制使用指定的索引进行查询,如果数据库没有指定的索引,则报错,无法查询
SDB_FLG_QUERY_PARALLED 当添加该标志位之后,将启用并行子查询,每个子查询将完成扫描不同部分的数据
SDB_FLG_QUERY_WITH_RETURNDATA 一般查询时不会返回数据,只返回相应的游标,然后再通过游标获取数据。当添加该标志位之后,将在查询响应中返回数据,该标志位是默认开启的
SDB_FLG_QUERY_PREPARE_MORE 在查询时,服务端会与客户端进行多次传输,把查询结果返回给客户端。当添加该标志位之后,服务端每次会传输更多的查询数据给客户端,减少服务端和客户端的传输次数,从而减少网络开销
SDB_FLG_QUERY_FOR_UPDATE 当事务处于开启状态且事务隔离级别为 “RC” 时,默认情况下读取记录后将释放事务锁定。当添加该标志位之后,事务锁将不会在事务提交或回滚之前释放。当事务处于关闭状态或者事务隔离级别为 “RU” 时,该标志位不起作用

Note:

假设用户指定了集合中不存在的索引查询数据,那么查询会进行全表查询,而不是索引查询。如果用户指定了集合中不存在的索引查询数据,然后又指定了 SDB_FLG_QUERY_FORCE_HINT 标志位,因为该标志位是强制进行索引查询,所以用户执行该操作会报错。

返回值

返回查询结果集的游标。

错误

如果出错则抛异常,并输出错误信息,可以通过getLastErrMsg()获取错误信息或通过getLastError()获取错误码。 关于错误处理可以参考常见错误处理指南

常见错误可参考错误码

示例

  • 强制使用指定的索引进行查询。

    > db.foo.bar.find().hint( { "": "ageIndex" } ).flags( SDB_FLG_QUERY_FORCE_HINT )
    {
      "_id": {
        "$oid": "5d412cfa614afb5557b2b41d"
      },
      "name": "fang",
      "age": 18
    }
    {
      "_id": {
        "$oid": "5d412cfa614afb5557b2b41c"
      },
      "name": "alice",
      "age": 19
    }
    {
      "_id": {
        "$oid": "5d412cfa614afb5557b2b41b"
      },
      "name": "ben",
      "age": 21
    }
    
    > db.foo.bar.find().hint( { "": "notExistIndex" } ).flags( SDB_FLG_QUERY_FORCE_HINT )
    uncaught exception: -53
    Invalid hint
    Takes 0.003438s.
回到顶部