logologo
开始
手册
开发
插件
API
首页
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
开始
手册
开发
插件
API
首页
logologo
API Overview

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
全局环境变量

@nocobase/client

Application
Plugin

@nocobase/database

Collection
Field

interfaces

BaseInterface
Filter Operators

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repository

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (abstract)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

DataSourceManager
FlowContext
FlowEngine
FlowModel
FlowResource

@nocobase/logger

Logger

@nocobase/server

AppCommand
Application
AuditManager
Context
Migration
Plugin

@nocobase/sdk

Auth
Storage

@nocobase/telemetry

Metric
Telemetry
Trace
Previous PageBaseInterface
Next PageRelationRepository

#Filter Operators

用于 Repository 的 find、findOne、findAndCount、count 等 API 的 filter 参数中:

const repository = db.getRepository('books');

repository.find({
  filter: {
    title: {
      $eq: '春秋',
    },
  },
});

为了支持 JSON 化,NocoBase 中将查询运算符以 $ 为前缀的字符串标识。

另外,NocoBase 也提供了扩展运算符的 API,详见 db.registerOperators()。

#通用运算符

#$eq

判断字段值是否相等于指定值。相当于 SQL 的 =。

示例

repository.find({
  filter: {
    title: {
      $eq: '春秋',
    },
  },
});

等同于 title: '春秋'。

#$ne

判断字段值是否不等于指定值。相当于 SQL 的 !=。

示例

repository.find({
  filter: {
    title: {
      $ne: '春秋',
    },
  },
});

#$is

判断字段值是否为指定值。相当于 SQL 的 IS。

示例

repository.find({
  filter: {
    title: {
      $is: null,
    },
  },
});

#$not

判断字段值是否不为指定值。相当于 SQL 的 IS NOT。

示例

repository.find({
  filter: {
    title: {
      $not: null,
    },
  },
});

#$col

判断字段值是否等于另一个字段的值。相当于 SQL 的 =。

示例

repository.find({
  filter: {
    title: {
      $col: 'name',
    },
  },
});

#$in

判断字段值是否在指定数组中。相当于 SQL 的 IN。

示例

repository.find({
  filter: {
    title: {
      $in: ['春秋', '战国'],
    },
  },
});

#$notIn

判断字段值是否不在指定数组中。相当于 SQL 的 NOT IN。

示例

repository.find({
  filter: {
    title: {
      $notIn: ['春秋', '战国'],
    },
  },
});

#$empty

判断一般字段是否为空,如果是字符串字段,判断是否为空串,如果是数组字段,判断是否为空数组。

示例

repository.find({
  filter: {
    title: {
      $empty: true,
    },
  },
});

#$notEmpty

判断一般字段是否不为空,如果是字符串字段,判断是否不为空串,如果是数组字段,判断是否不为空数组。

示例

repository.find({
  filter: {
    title: {
      $notEmpty: true,
    },
  },
});

#逻辑运算符

#$and

逻辑 AND。相当于 SQL 的 AND。

示例

repository.find({
  filter: {
    $and: [{ title: '诗经' }, { isbn: '1234567890' }],
  },
});

#$or

逻辑 OR。相当于 SQL 的 OR。

示例

repository.find({
  filter: {
    $or: [{ title: '诗经' }, { publishedAt: { $lt: '0000-00-00T00:00:00Z' } }],
  },
});

#布尔类型字段运算符

用于布尔类型字段 type: 'boolean'

#$isFalsy

判断布尔类型字段值是否为假。布尔字段值为 false、0 和 NULL 的情况都会被判断为 $isFalsy: true。

示例

repository.find({
  filter: {
    isPublished: {
      $isFalsy: true,
    },
  },
});

#$isTruly

判断布尔类型字段值是否为真。布尔字段值为 true 和 1 的情况都会被判断为 $isTruly: true。

示例

repository.find({
  filter: {
    isPublished: {
      $isTruly: true,
    },
  },
});

#数字类型字段运算符

用于数字类型字段,包括:

  • type: 'integer'
  • type: 'float'
  • type: 'double'
  • type: 'real'
  • type: 'decimal'

#$gt

判断字段值是否大于指定值。相当于 SQL 的 >。

示例

repository.find({
  filter: {
    price: {
      $gt: 100,
    },
  },
});

#$gte

判断字段值是否大于等于指定值。相当于 SQL 的 >=。

示例

repository.find({
  filter: {
    price: {
      $gte: 100,
    },
  },
});

#$lt

判断字段值是否小于指定值。相当于 SQL 的 <。

示例

repository.find({
  filter: {
    price: {
      $lt: 100,
    },
  },
});

#$lte

判断字段值是否小于等于指定值。相当于 SQL 的 <=。

示例

repository.find({
  filter: {
    price: {
      $lte: 100,
    },
  },
});

#$between

判断字段值是否在指定的两个值之间。相当于 SQL 的 BETWEEN。

示例

repository.find({
  filter: {
    price: {
      $between: [100, 200],
    },
  },
});

#$notBetween

判断字段值是否不在指定的两个值之间。相当于 SQL 的 NOT BETWEEN。

示例

repository.find({
  filter: {
    price: {
      $notBetween: [100, 200],
    },
  },
});

#字符串类型字段运算符

用于字符串类型字段,包括 string

#$includes

判断字符串字段是否包含指定子串。

示例

repository.find({
  filter: {
    title: {
      $includes: '三字经',
    },
  },
});

#$notIncludes

判断字符串字段是否不包含指定子串。

示例

repository.find({
  filter: {
    title: {
      $notIncludes: '三字经',
    },
  },
});

#$startsWith

判断字符串字段是否以指定子串开头。

示例

repository.find({
  filter: {
    title: {
      $startsWith: '三字经',
    },
  },
});

#$notStatsWith

判断字符串字段是否不以指定子串开头。

示例

repository.find({
  filter: {
    title: {
      $notStatsWith: '三字经',
    },
  },
});

#$endsWith

判断字符串字段是否以指定子串结尾。

示例

repository.find({
  filter: {
    title: {
      $endsWith: '三字经',
    },
  },
});

#$notEndsWith

判断字符串字段是否不以指定子串结尾。

示例

repository.find({
  filter: {
    title: {
      $notEndsWith: '三字经',
    },
  },
});

#$like

判断字段值是否包含指定的字符串。相当于 SQL 的 LIKE。

示例

repository.find({
  filter: {
    title: {
      $like: '计算机',
    },
  },
});

#$notLike

判断字段值是否不包含指定的字符串。相当于 SQL 的 NOT LIKE。

示例

repository.find({
  filter: {
    title: {
      $notLike: '计算机',
    },
  },
});

#$iLike

判断字段值是否包含指定的字符串,忽略大小写。相当于 SQL 的 ILIKE(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $iLike: 'Computer',
    },
  },
});

#$notILike

判断字段值是否不包含指定的字符串,忽略大小写。相当于 SQL 的 NOT ILIKE(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $notILike: 'Computer',
    },
  },
});

#$regexp

判断字段值是否匹配指定的正则表达式。相当于 SQL 的 REGEXP(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $regexp: '^计算机',
    },
  },
});

#$notRegexp

判断字段值是否不匹配指定的正则表达式。相当于 SQL 的 NOT REGEXP(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $notRegexp: '^计算机',
    },
  },
});

#$iRegexp

判断字段值是否匹配指定的正则表达式,忽略大小写。相当于 SQL 的 ~*(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $iRegexp: '^COMPUTER',
    },
  },
});

#$notIRegexp

判断字段值是否不匹配指定的正则表达式,忽略大小写。相当于 SQL 的 !~*(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $notIRegexp: '^COMPUTER',
    },
  },
});

#日期类型字段运算符

用于日期类型字段 type: 'date'

#$dateOn

判断日期字段是否在某天内。

示例

repository.find({
  filter: {
    createdAt: {
      $dateOn: '2021-01-01',
    },
  },
});

#$dateNotOn

判断日期字段是否不在某天内。

示例

repository.find({
  filter: {
    createdAt: {
      $dateNotOn: '2021-01-01',
    },
  },
});

#$dateBefore

判断日期字段是否在某个值之前。相当于小于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateBefore: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateNotBefore

判断日期字段是否不在某个值之前。相当于大于等于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateNotBefore: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateAfter

判断日期字段是否在某个值之后。相当于大于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateAfter: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateNotAfter

判断日期字段是否不在某个值之后。相当于小于等于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateNotAfter: '2021-01-01T00:00:00.000Z',
    },
  },
});

#数组类型字段运算符

用于数组类型字段 type: 'array'

#$match

判断数组字段的值是否匹配指定数组中的值。

示例

repository.find({
  filter: {
    tags: {
      $match: ['文学', '历史'],
    },
  },
});

#$notMatch

判断数组字段的值是否不匹配指定数组中的值。

示例

repository.find({
  filter: {
    tags: {
      $notMatch: ['文学', '历史'],
    },
  },
});

#$anyOf

判断数组字段的值是否包含指定数组中的任意值。

示例

repository.find({
  filter: {
    tags: {
      $anyOf: ['文学', '历史'],
    },
  },
});

#$noneOf

判断数组字段的值是否不包含指定数组中的任意值。

示例

repository.find({
  filter: {
    tags: {
      $noneOf: ['文学', '历史'],
    },
  },
});

#$arrayEmpty

判断数组字段是否为空。

示例

repository.find({
  filter: {
    tags: {
      $arrayEmpty: true,
    },
  },
});

#$arrayNotEmpty

判断数组字段是否不为空。

示例

repository.find({
  filter: {
    tags: {
      $arrayNotEmpty: true,
    },
  },
});

#关系字段类型运算符

用于判断关系是否存在,字段类型包括:

  • type: 'hasOne'
  • type: 'hasMany'
  • type: 'belongsTo'
  • type: 'belongsToMany'

#$exists

有关系数据

示例

repository.find({
  filter: {
    author: {
      $exists: true,
    },
  },
});

#$notExists

无关系数据

示例

repository.find({
  filter: {
    author: {
      $notExists: true,
    },
  },
});