$type (aggregation)

On this page本页内容

Definition定义

$type

New in version 3.4.版本3.4中的新功能。

Returns a string that specifies the BSON type of the argument.返回一个字符串,该字符串指定参数的BSON类型

$type has the following operator expression syntax:具有以下运算符表达式语法

{ $type: <expression> }

The argument can be any valid expression.参数可以是任何有效的表达式

See also参阅

  • $isNumber - checks if the argument is a number. 检查参数是否为数字。New in MongoDB 4.4MongoDB 4.4中的新功能
  • $type (Query) - filters fields based on BSON type.根据BSON类型筛选字段。

Behavior行为

$type

Unlike the $type query operator, which matches array elements based on their BSON type, the $type aggregation operator does not examine array elements. Instead, when passed an array as its argument, the $type aggregation operator returns the type of the argument, i.e. "array".

If the argument is a field that is missing in the input document, $type returns the string "missing".如果参数是输入文档中缺少的字段,$type将返回字符串"missing"

The following table shows the $type output for several common types of expressions:下表显示了几种常见表达式类型的$type输出:

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

Note

In the case of a literal array such as [ 1, 2, 3 ], enclose the expression in an outer set of array brackets to prevent MongoDB from parsing [ 1, 2, 3 ] as an argument list with three arguments (1, 2, 3). Wrapping the array [ 1, 2, 3 ] in a $literal expression achieves the same result.

See operator expression syntax forms for more information.有关更多信息,请参阅运算符表达式语法形式

Available Types可用类型

Type类型NumberAliasNotes备注
Double 1 “double”  
String 2 “string”  
Object 3 “object”  
Array 4 “array”  
Binary data 5 “binData”  
Undefined 6 “undefined” Deprecated.
ObjectId 7 “objectId”  
Boolean 8 “bool”  
Date 9 “date”  
Null 10 “null”  
Regular Expression 11 “regex”  
DBPointer 12 “dbPointer” Deprecated.
JavaScript 13 “javascript”  
Symbol 14 “symbol” Deprecated.
JavaScript code with scope 15 “javascriptWithScope” Deprecated in MongoDB 4.4.
32-bit integer 16 “int”  
Timestamp 17 “timestamp”  
64-bit integer 18 “long”  
Decimal128 19 “decimal” New in version 3.4.
Min key -1 “minKey”  
Max key 127 “maxKey”  

If the argument is a field that is missing in the input document, $type returns the string "missing".如果参数是输入文档中缺少的字段,$type将返回字符串"missing"

Example示例

This example uses a collection named coll with the following documents:本例使用名为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 }

The following aggregation operation uses the $type operator to display the type of field a for all documents as part of the $project stage.以下聚合操作使用$type运算符显示所有文档的字段a的类型,作为$project阶段的一部分。

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

The operation returns the following:该操作返回以下内容:

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