AggregateCommand.indexOfCP(value: Expression[]): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。在目标字符串中查找子字符串,并返回第一次出现的 UTF-8code point 索引(从0开始)。如果不存在子字符串,返回 -1。

参数

value: Expression[]

[<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>]

返回值

Object

API 说明

code point 是“码位”,又名“编码位置”。这里特指 Unicode 包中的码位,范围是从0(16进制)到10FFFF(16进制)。

indexOfCP 的语法如下:

  1. db.command.aggregate.indexOfCP([<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>])

下面是 4 种表达式的详细描述:

表达式描述
目标字符串表达式任何可以被解析为字符串的表达式
子字符串表达式任何可以被解析为字符串的表达式
开始位置表达式任何可以被解析为非负整数的表达式
结束位置表达式任何可以被解析为非负整数的表达式

示例代码

假设集合 students 的记录如下:

  1. { "firstName": "Yuanxin", "group": "a", "lastName": "Dong", "score": 84 }
  2. { "firstName": "Weijia", "group": "a", "lastName": "Wang", "score": 96 }
  3. { "firstName": "Chengxi", "group": "b", "lastName": "Li", "score": 80 }

借助 indexOfCP 查找字符 "a" 在字段 firstName 中的位置:

  1. const $ = db.command.aggregate
  2. db
  3. .collection('students')
  4. .aggregate()
  5. .project({
  6. _id: 0,
  7. aStrIndex: $.indexOfCP(['$firstName', 'a'])
  8. })
  9. .end()

返回的结果如下:

  1. { "aStrIndex": 2 }
  2. { "aStrIndex": 5 }
  3. { "aStrIndex": -1 }