Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$type(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$type

版本 3.4 中的新增功能

返回指定参数 BSON 类型的字符串。

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

{ $type: <expression> }

参数可以是任何有效表达式

提示

另请参阅:

  • $isNumber — 检查参数是否为数字。

  • $type (Query) - 根据 BSON 类型过滤字段。

与根据 BSON 类型匹配数组元素的 $type 查询操作符不同,$type 聚合操作符不检查数组元素。相反,当传递数组作为其参数时,$type 聚合操作符会返回参数的类型,即 "array"

如果参数是输入文档中缺失的字段,$type 将返回字符串 "missing"

下表显示了 $type 输出,适用于几种常见的表达式类型:

例子
结果
{ $type: "a" }
"string"
{ $type: /a/ }
"regex"
{ $type: 1 }
"double"
{ $type: NumberLong(627) }
"long"
{ $type: { x: 1 } }
"object"
{ $type: [ [ 1, 2, 3 ] ] }
"array"

注意

对于像 [ 1, 2, 3 ] 这样的文字数组,将表达式括在外面的数组括号中,以防止 MongoDB 将 [ 1, 2, 3 ] 解析为带有三个参数的参数列表 (1, 2, 3)。将数组 [ 1, 2, 3 ] 包裹在一个 $literal 表达式中也能达到同样的效果。

有关更多信息,请参阅运算符表达式事务语法形式

类型
数值
别名
注意
double
1
"double"
字符串
2
"string"
对象
3
"object"
阵列
4
"array"
二进制数据
5
"binData"
未定义
6
"undefined"
已弃用。
ObjectId
7
"objectId"
布尔
8
"bool"
Date
9
"date"
null
10
"null"
正则表达式
11
"regex"
数据库指针
12
"dbPointer"
已弃用。
JavaScript
13
"javascript"
符号
14
"symbol"
已弃用。
32 位整数
16
"int"
时间戳
17
"timestamp"
64 位整型
18
"long"
Decimal128
19
"decimal"
最小键
-1
"minKey"
Max key
127
"maxKey"

如果参数是输入文档中缺失的字段,$type 将返回字符串 "missing"

此示例使用了一个名为 coll集合,其中包含以下文档:

{ _id: 0, a : 8 }
{ _id: 1, a : [ 41.63, 88.19 ] }
{ _id: 2, a : { a : "apple", b : "banana", c: "carrot" } }
{ _id: 3, a : "caribou" }
{ _id: 4, a : NumberLong(71) }
{ _id: 5 }

作为 $project 阶段的一部分,以下聚合操作使用 $type 操作符显示所有文档字段 a 的类型。

db.coll.aggregate([{
$project: {
a : { $type: "$a" }
}
}])

该操作返回以下内容:

{ _id: 0, "a" : "double" }
{ _id: 1, "a" : "array" }
{ _id: 2, "a" : "object" }
{ _id: 3, "a" : "string" }
{ _id: 4, "a" : "long" }
{ _id: 5, "a" : "missing" }

后退

$trunc

来年

$unsetField

在此页面上