文档

关于 SequoiaDB

快速入门

安装

基本操作

数据模型

SQL引擎

FileSystem引擎

S3引擎

系统架构

数据库管理

连接器

驱动

参考手册

SequoiaDB Shell方法

操作符

SQL语法

SQL to SequoiaDB 映射表

限制

错误码

故障排除

SAC 管控中心

Web服务

版本信息

概述

函数操作

函数操作可以配合匹配符选择符使用,以实现更复杂的功能。

  1. 配合匹配符一起使用,可以对字段进行各种函数运算之后,再执行匹配操作。

    以下示例,匹配字段a长度为3的记录:

    > db.foo.bar.find({a:{$strlen:1, $et:3}})

    Note: 先获取字段a的长度,再用该长度与3比较,返回长度为3的记录。

  2. 作为选择符使用,可以对选取的字段进行函数运算,返回运算后的结果。

    以下示例,返回将字段a转大写的结果:

    > db.foo.bar.find({}, {a:{$upper:1}})

所有支持的函数操作如下:

函数 描述 示例
$abs 取绝对值 db.foo.bar.find({}, {a:{$abs:1}})
$ceiling 向上取整 db.foo.bar.find({}, {a:{$ceiling:1}})
$floor 向下取整 db.foo.bar.find({}, {a:{$floor:1}})
$mod 取模运算 db.foo.bar.find({}, {a:{$mod:1}})
$add 加法运算 db.foo.bar.find({}, {a:{$add:10}})
$subtract 减法运算 db.foo.bar.find({}, {a:{$subtract:10}})
$multiply 乘法运算 db.foo.bar.find({}, {a:{$multiply:10}})
$divide 除法运算 db.foo.bar.find({}, {a:{$divide:10}})
$substr 截取子串 db.foo.bar.find({}, {a:{$substr:[0,4]}})
$strlen 获取字符串长度 db.foo.bar.find({}, {a:{$strlen:10}})
$lower 字符串转为小写 db.foo.bar.find({}, {a:{$lower:1}})
$upper 字符串转为大写 db.foo.bar.find({}, {a:{$upper:1}})
$ltrim 去除左侧空格 db.foo.bar.find({}, {a:{$ltrim:1}})
$rtrim 去除右侧空格 db.foo.bar.find({}, {a:{$rtrim:1}})
$trim 去除左右两侧空格 db.foo.bar.find({}, {a:{$trim:1}})
$cast 转换字段类型 db.foo.bar.find({}, {a:{$cast:"int32"}})
$size 获取数组元素个数 db.foo.bar.find({}, {a:{$size:1}})
$type 获取字段类型 db.foo.bar.find({}, {a:{$type:1}})
$slice 截取数组元素 db.foo.bar.find({}, {a:{$slice:[0,2]}})

函数操作可以支持流水线式处理,多个函数流水线执行:

> db.foo.bar.find({a:{$trim:1, $upper:1, $et:"ABC"}})

Note:

先对字段a去除左右两侧空格,然后再转换成大写,最后匹配与"ABC"相等的记录

当字段类型为数组类型时,函数会对该字段做一次展开,并对每个数组元素执行函数操作。

以取绝对函值函数为例:

> db.foo.bar.find()
{
  "a": [
    1,
    -3,
    -9
  ]
}

> db.foo.bar.find({}, {a:{$abs:1}})
{
  "a": [
    1,
    3,
    9
  ]
}
回到顶部