MongoDBでは、 $ type
を使用できます BSONタイプに基づいてドキュメントのコレクションをフィルタリングする要素クエリ演算子。特定のフィールドに特定のBSONタイプを持つドキュメントのみを返します。
フィールドとBSONタイプ、および $ type
を指定します 一致するすべてのドキュメントが返されます。
例
次のドキュメントをemployees
というコレクションに挿入するとします。 :
db.employees.insertMany([
{ _id: 1, name: "Sandy", remuneration: "Too Much!!!" },
{ _id: 2, name: "Sarah", remuneration: NumberInt(128000) },
{ _id: 3, name: "Fritz", remuneration: 25000 },
{ _id: 4, name: "Chris", remuneration: NumberDecimal("45000.75") },
{ _id: 5, name: "Beck", remuneration: "10% commission" },
{ _id: 6, name: "Peter", remuneration: "70K" },
{ _id: 7, name: "Homer", remuneration: null },
])
各ドキュメントには、従業員とその従業員の報酬が含まれています。
ただし、各ドキュメントには報酬
があります。 フィールドでは、このフィールドで使用されているBSONタイプに関して、ドキュメント全体で一貫性がないことがわかります。
$ type
を使用できます 報酬
の対象となるドキュメントのみを返すクエリ演算子 フィールドは特定のBSONタイプです。
例:
db.employees.find( { remuneration: { $type: "double" } } )
結果:
{ "_id" : 3, "name" : "Fritz", "remuneration" : 25000 }
この場合、報酬
でBSONタイプがdoubleのドキュメントは1つだけです。 フィールド。
文字列が含まれているものを見てみましょう:
db.employees.find( { remuneration: { $type: "string" } } )
結果:
{ "_id" : 1, "name" : "Sandy", "remuneration" : "Too Much!!!" } { "_id" : 5, "name" : "Beck", "remuneration" : "10% commission" } { "_id" : 6, "name" : "Peter", "remuneration" : "70K" }
番号コード> エイリアス
number
を使用できます 数値型を含むドキュメントを返す便利な方法としてのエイリアス。
番号エイリアスは、次のBSONタイプと一致します:
-
double
32ビット整数
64ビット整数
小数
例:
db.employees.find( { remuneration: { $type: "number" } } )
結果:
{ "_id" : 2, "name" : "Sarah", "remuneration" : 128000 } { "_id" : 3, "name" : "Fritz", "remuneration" : 25000 } { "_id" : 4, "name" : "Chris", "remuneration" : NumberDecimal("45000.75") }
複数のタイプを確認する
BSONタイプの配列を提供することで、複数のタイプを確認できます。
例:
db.employees.find( {
remuneration: { $type: ["double", "int", "null"] }
} )
結果:
{ "_id" : 2, "name" : "Sarah", "remuneration" : 128000 } { "_id" : 3, "name" : "Fritz", "remuneration" : 25000 } { "_id" : 7, "name" : "Homer", "remuneration" : null }
番号でフィルタリング
各BSONタイプには、対応する番号とエイリアスがあります(MongoDBのドキュメントで概説されています)。
前の例ではエイリアスを使用しています。または、BSONタイプのエイリアスの代わりに番号を使用することもできます。
例:
db.employees.find( {
remuneration: { $type: [1, 16, 10] }
} )
結果:
{ "_id" : 2, "name" : "Sarah", "remuneration" : 128000 } { "_id" : 3, "name" : "Fritz", "remuneration" : 25000 } { "_id" : 7, "name" : "Homer", "remuneration" : null }
この場合、 double
に対応する数値の配列を提供しました 、 int
、および null
(これは前の例と同じ結果を返します。)
MongoDB 3.2より前は、 $ type
では数字のみが受け入れられていました。 クエリ演算子。文字列エイリアスは、MongoDB3.2以降でのみ受け入れられています。
フィールドのタイプを返す
$ type
もあります フィールドの値のBSONタイプを取得できる集約パイプライン演算子。