sql >> データベース >  >> NoSQL >> MongoDB

MongoDB$typeクエリ演算子

    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タイプを取得できる集約パイプライン演算子。


    1. オープンスタンダードの作成:ApacheAtlasを使用した機械学習ガバナンス

    2. マングースはインターネットなしでは接続できません

    3. TLSを使用したRedisSentinels

    4. PHPを使用してmongodbで認証できません