定義
Tip
$isNumber- 引数が数値であるかどうかをチェックします。$type (Query)- BSON 型に基づいてフィールドをフィルタリングします。
動作
$type
BSON 型に基づいて配列要素を照合する$typeクエリ演算子とは異なり、 $type集計演算子は配列要素を検査しません。 代わりに、引数として配列を渡されると、 $type集計演算子は引数の型、つまり"array"を返します。
引数が入力ドキュメントに欠落しているフィールドである場合、 $typeは string "missing"を返します。
次の表は、いくつかの一般的なタイプの式に対する$typeの出力を示しています。
例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
利用可能なタイプ
タイプ | 番号 | エイリアス | ノート |
|---|---|---|---|
Double | 1 | "double" | |
文字列 | 2 | "string" | |
オブジェクト | 3 | "object" | |
配列 | 4 | "array" | |
バイナリ データ | 5 | "binData" | |
未定義 | 6 | "undefined" | 非推奨。 |
ObjectId | 7 | "objectId" | |
ブール値 | 8 | "bool" | |
日付 | 9 | "date" | |
null | 10 | "null" | |
正規表現 | 11 | "regex" | |
DBポインタ | 12 | "dbPointer" | 非推奨。 |
JavaScript | 13 | "javascript" | |
シンボル | 14 | "symbol" | 非推奨。 |
スコープを持つ JavaScript | 15 | "javascriptWithScop" | 非推奨。 |
32 ビット整数 | 16 | "int" | |
タイムスタンプ | 17 | "timestamp" | |
64 ビット整数 | 18 | "long" | |
Decimal128 | 19 | "decimal" | |
Min key | -1 | "minKey" | |
Max key | 127 | "maxKey" |
引数が入力ドキュメントに欠落しているフィールドである場合、 $typeは string "missing"を返します。
例
この例では、次のドキュメントを含む coll という名前のコレクションを使用します。
db.coll.insertMany( [ { _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 : Long(71) }, { _id: 5, a : null }, { _id: 6 } ] )
次の集計操作では、$type 演算子を使用して、すべてのドキュメントのフィールド a の型を $project ステージの一部として表示します。
db.coll.aggregate([{ $project: { a : { $type: "$a" } } }])
[ { _id: 0, "a" : "int" }, { _id: 1, "a" : "array" }, { _id: 2, "a" : "object" }, { _id: 3, "a" : "string" }, { _id: 4, "a" : "long" }, { _id: 5, "a" : "null" }, { _id: 6, "a" : "missing" } ]
有無のチェック
式は $exists演算子をサポートしていません。式にフィールドが存在するかどうかを評価するには、 型を使用できます。missing
次の集計操作では、missing タイプを使用して、aフィールドが欠落している上記の collコレクションのドキュメントに aフィールドを追加します。 a: null があるドキュメントと aフィールドが欠落しているドキュメントは同じではないことに注意してください。
db.coll.aggregate([ { $addFields: { a: { $cond: { if: { $eq: [{ $type: "$a" }, "missing"] }, then: [], else: "$a" } } } } ])
[ { _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 : Long(71) }, { _id: 5, a : null }, { _id: 6, a : [] } ]