“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

$indexOfCP(聚合)

在此页面上

  • 定义
  • 行为
  • 举例
$indexOfCP

在字符串中搜索子string 的出现位置并返回 UTF-8 代码点 第一次出现的索引(从零开始)。如果未找到子字符串,则返回-1

$indexOfCP具有以下操作符表达式语法:

{ $indexOfCP: [ <string expression>, <substring expression>, <start>, <end> ] }
字段
类型
说明
<string>
字符串

可以是任何有效的表达式,只要它解析为字符串即可。 有关表达式的更多信息,请参阅表达式。

如果字符串表达式解析为 null 的值或引用了缺失的字段,$indexOfCP 则会返回 null

如果字符串表达式未解析为字符串或 null,也未引用缺失字段,则 $indexOfCP 将会返回错误。

<substring>
字符串
可以是任何有效的表达式,只要它解析为字符串即可。 有关表达式的更多信息,请参阅表达式。
<start>
整型

可选。一个整数或可以表示为整数的数字(例如 2.0),用于指定搜索的起始索引位置。可以是任何能够解析为非负整数的有效表达式

如果未指定,则搜索的起始索引位置为字符串的开头。

<end>
整型

可选。一个整数或可表示为整数的数字(例如 2.0),它指定搜索的结束索引位置。可以是任何能够解析为非负整数的有效表达式。如果指定了 <end> 索引值,则还应指定 <start> 索引值;否则,$indexOfCP 将使用 <end> 值作为 <start> 索引值,而不是 <end> 值。

如果未指定,则搜索的结束索引位置为字符串的末尾。

如果在 <string expression> 中多次找到 <substring expression>,则 $indexOfCP 返回从起始索引位置开始找到的第一个 <substring expression> 的索引。

$indexOfCP 返回 null

  • 如果 <string expression> 为空值,或者

  • 如果 <string expression> 引用输入文档中不存在的字段。

$indexOfCP 返回错误:

  • 如果<string expression>不是字符串且不为 null,或者

  • 如果<substring expression>为 null 或不是字符串或引用输入文档中不存在的字段,或者

  • 如果 <start><end> 是负整数(或可以表示为负整数的值,例如 -5.0)。

$indexOfCP 返回 -1

  • 如果在<string expression>

  • 如果 <start> 为大于 <end> 的数字,或是

  • 如果<start>是一个大于字符串字节长度的数字。

例子
结果
{ $indexOfCP: [ "cafeteria", "e" ] }
3
{ $indexOfCP: [ "cafétéria", "é" ] }
3
{ $indexOfCP: [ "cafétéria", "e" ] }
-1
{ $indexOfCP: [ "cafétéria", "t" ] }
4
{ $indexOfCP: [ "foo.bar.fi", ".", 5 ] }
7
{ $indexOfCP: [ "vanilla", "ll", 0, 2 ] }
-1
{ $indexOfCP: [ "vanilla", "ll", -1 ] }
错误
{ $indexOfCP: [ "vanilla", "ll", 12 ] }
-1
{ $indexOfCP: [ "vanilla", "ll", 5, 2 ] }
-1
{ $indexOfCP: [ "vanilla", "nilla", 3 ] }
-1
{ $indexOfCP: [ null, "foo" ] }
null

考虑包含以下文档的 inventory 集合:

{ "_id" : 1, "item" : "foo" }
{ "_id" : 2, "item" : "fóofoo" }
{ "_id" : 3, "item" : "the foo bar" }
{ "_id" : 4, "item" : "hello world fóo" }
{ "_id" : 5, "item" : null }
{ "_id" : 6, "amount" : 3 }

以下操作使用 $indexOfCP 操作符返回字符串 foo 在每个 item 字符串中的位置的代码点索引:

db.inventory.aggregate(
[
{
$project:
{
cpLocation: { $indexOfCP: [ "$item", "foo" ] },
}
}
]
)

操作返回以下结果:

{ "_id" : 1, "cpLocation" : "0" }
{ "_id" : 2, "cpLocation" : "3" }
{ "_id" : 3, "cpLocation" : "4" }
{ "_id" : 4, "cpLocation" : "-1" }
{ "_id" : 5, "cpLocation" : null }
{ "_id" : 6, "cpLocation" : null }

提示

另请参阅:

← $indexOfBytes(聚合)

在此页面上