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

MongoDBの個別のコマンド

    MongoDBでは、distinct 集計コマンドは、単一のコレクション全体で指定されたフィールドの個別の値を検索します。

    個別の値の配列を含むドキュメントと、クエリ統計およびクエリプランを含む埋め込みドキュメントを返します。

    個別の値は、冗長な重複が削除された値です。個別の値は一意の値です。たとえば、同じ値のドキュメントが2つまたは3つある場合、distinct コマンドは1つの値のみを返します。

    db.collection.distinct()もあります メソッド。distinctのシェルラッパーメソッドです。 コマンド。

    petsというコレクションがあるとします。 次のドキュメントを使用します。

    { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
    { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
    { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
    { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
    { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
    { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
    { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

    distinctを使用できます 個別のペットタイプを返すコマンド。

    distinct コマンドは、コレクションを最初のフィールドとして受け入れ、キーを2番目のフィールドとして受け入れます。キーは、個別の値を返すフィールドです。

    db.runCommand ( { distinct: "pets", key: "type" } )

    結果:

    { "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }

    この例では、コレクションに4匹の犬と2匹の猫がいますが、配列にはそれぞれ1匹しか含まれていません。 distinct コマンドは重複する値を削除しました。

    元のドキュメントにはバットが1つしかないため、distinct コマンドはそれを変更しません–重複排除する重複値はありませんでした。

    埋め込みドキュメント

    ドット表記を使用して、埋め込みフィールドから個別の値を取得できます

    productsというコレクションがあるとします。 次のドキュメントが含まれています:

    { "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
    { "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] }
    { "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
    { "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] }
    { "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] }
    { "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] }
    { "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] }
    { "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] }
    { "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] }

    次のクエリを使用して、製品名に個別の値を返すことができます。

    db.runCommand ( { distinct: "products", key: "product.name" } )

    結果:

    { "values" : [ "Cap", "Shirt", "Shoes", "Shorts" ], "ok" : 1 }

    colorについても同じことができます フィールド。

    db.runCommand ( { distinct: "products", key: "product.color" } )

    結果:

    { "values" : [ "Brown", "Green", "Purple", "White" ], "ok" : 1 }

    配列から個別の値を取得する

    distinctの使用方法は次のとおりです 上記の配列から個別の値を取得するコマンド。

    db.runCommand ( { distinct: "products", key: "sizes" } )

    結果:

    { "values" : [ "L", "M", "S", "XL", "XS" ], "ok" : 1 }

    distinctを使用する クエリを使用

    個別の値を取得するドキュメントを指定するクエリを提供できます。これを行うには、キーの後にクエリを追加します。

    例:

    db.runCommand ( { 
        distinct: "products", 
        key: "product.name", 
        query: { "sizes": "S" } 
        } )

    結果:

    { "values" : [ "Shirt", "Shoes", "Shorts" ], "ok" : 1 }

    詳細情報

    distinct コマンドは、commentなどの他のフィールドも受け入れます 、readConcern 、およびcollation (これにより、大文字と小文字やアクセント記号の規則など、文字列比較の言語固有の規則を指定できます)。

    詳細については、MongoDBのドキュメントを参照してください。


    1. 時間の経過に伴うRedigoScanStructエラー

    2. (MongoDB Java)$pushを配列に

    3. 高可用性のためにMongoDB用のPerconaサーバーをデプロイする方法

    4. CDPの運用データベース