MongoDB $Min 演算子

Mongodb Min Yan Suan Zi



データベースやプログラミングの初心者でない場合は、比較演算子 (大なり、小なり、等しいなど) を使用するプログラムやクエリを試したことがあるはずです。MongoDB では、「$set」演算子を使用して特定のフィールド レコードを更新するか、データベースに新しいレコードを追加する場合、「$min」や「$max」などの比較演算子を使用して同じ結果を得ることができます。 MongoDB では、「$min」演算子を多くの関数クエリ内で使用して、新しい値が既に挿入された値よりも小さい場合に特定のフィールドを更新できます。また、コレクションのレコードを特定の順序でグループ化して表示するためにも利用できます。このガイドは、MongoDB で「$min」演算子を無効にするさまざまな方法について説明します。

例 1:

最初の図から始めて、MongoDB の「$min」演算子を使用して、Windows システムの MongoDB シェル ツールを使用して、既に挿入されているレコードを更新する方法を示します。したがって、データベースにすでに追加されているいくつかのレコードが必要です。したがって、insertMany() 関数クエリを使用して、「test」データベースの「order」コレクションに合計 5 つのレコードを追加します。次の図に示されている挿入された各レコードには、id、title、saleprice、tax の合計 4 つのフィールドが含まれています。この 5 レコードのデータは、添付の出力に従って正常に挿入されます。

テスト > db.order.insertMany ( [ { 「イド」 :01, '題名' : '石鹸' 'セールスプライス' : 500 '税' : 24 }
... { 「イド」 :02, '題名' : 'シャンプー' 'セールスプライス' : 700 '税' : 27 }
... { 「イド」 :03, '題名' : '洗剤' 'セールスプライス' : 400 '税' : 22 }
... { 「イド」 :04, '題名' : '香水' 'セールスプライス' : 900 '税' : 30 }
... { 「イド」 :05, '題名' : '靄' 'セールスプライス' : 850 '税' : 27 } ] )







挿入されたレコードを「テスト」データベースで確認します。そのためには、「db」命令の引数として「printjson」を使用して、「forEach」メソッドとともに「find()」メソッドをキャストオフする必要があります。 「order」という名前のコレクションを使用して、レコードを画面に表示します。



テスト > デシベル。オーダー。検索 ( ) .forEach ( printjson )



「updateOne」関数クエリで「$min」演算子を使用して、作成したばかりの「order」コレクションから単一のレコードを更新するときが来ました。 「id」フィールドはデータベースから特定のレコードを更新するための一意の識別子として使用され、「$min」演算子は「SalePrice」フィールドに適用されて、その値がすでに挿入されている値よりも小さい場合にその値を 600 に更新します。出力メッセージは、クエリが成功したことを示していますが、更新は行われていません。





テスト > デシベル。order.updateOne ( { ID: 3 } { $分 : { セールスプライス: 600 } } )

3 番目のレコードの「SalePrice」フィールドが更新されないのは、「600」よりも小さい「400」の値が含まれているためです。したがって、「$min」演算子は、次の添付の find() クエリに従って、最小値の「400」をより大きな値の「600」で更新しません。



テスト > デシベル。オーダー。検索 ( ) .forEach ( printjson )

今回は更新クエリを少し変更して、別の出力を取得してみましょう。 「updateOne」関数を使用して「3」の単一レコードを変更するのとまったく同じ「db」命令を使用します。 「$min」演算子が「SalePrice」フィールドに適用され、「300」の値がすでに挿入された値よりも小さい場合、その値が「300」に設定されます。既に挿入されている SalePrice フィールドの値「400」は、比較対象の新しい値「300」よりも大きいことがわかっています。というわけで、今回は「400」を「300」に置き換えます。出力メッセージは、このクエリが正常に実行されたことを示しています。変更されたカウント = 1 は、1 つのレコードが変更されたことを意味します。

テスト > db.order.updateOne ( { ID: 3 } { $分 : { セールスプライス: 300 } } )

MongoDB シェルの「find()」関数命令を使用して、「test」データベースからの「order」コレクションのレコードを JSON 形式で表示した後、3 番目のレコードが正常に更新されていることがわかりました。 「SalePrice」フィールドの値 400 は、値 300 に置き換えられます。

テスト > デシベル。オーダー。検索 ( ) .forEach ( printjson )

例 2:

この MongoDB の図では、レコードの最小値に従って「$min」演算子に関してグループ化することにより、特定のデータベースのレコードをフェッチします。 MongoDB の「テスト」データベースの「注文」コレクションに同じ 5 つのレコードがあり、「テスト」データベースの特定のフィールドに重複データが必要であるとします。このために、「test」データベースの「order」コレクションにさらにレコードを追加します。今回は、「タイトル」フィールドに重複した値を挿入します。これは、一意の値のグループを形成するために「$group」句で使用されます。次の出力は、「test」データベース用に新しく挿入された 3 つのレコードを示しています。現在、「注文」コレクションには、5 つの古いレコードと比較して、「タイトル」フィールドの値が重複しています。残りは同じものを使用します。

「test」データベースの「order」コレクションに合計 8 レコードを取得したら、MongoDB の $min 演算子を、別のフィールドでグループ化された特定のフィールドに適用してテストします。添付の集計コマンドはこれに関するすべてです。これは、「db」キーワードで始まり、その後に特定のデータベース内のコレクションの名前と、aggregate() 関数が続きます。集計関数は、MongoDB の $group 句の使用から始まります。ここで特に使用されるのは、「Title」フィールドを一意のキーとして取得される「test」データベースの「Title」フィールドに関するグループ内のデータを表示するために使用されます。 .

同時に、価格フィールドが個別に初期化され、適用される「$min」演算子を介して合計 8 つの同じレコードから最小値レコードのみが取得されます。このクエリ実行の出力は、price セクションが少し更新された 5 つのレコードの表示を示しています。繰り返しレコードが表示されていないことがわかります。一意で最小値のレコードがいくつかここに表示されます。

テスト > db.order.aggregate ( [ { $グループ : { _id: ' $タイトル ' 、 価格: { $分 : ' $販売価格 ' } } } ] )

結論

このガイドは、「$min」演算子を使用できる簡単な方法を表示するための MongoDB の図のコレクションです。紹介の段落は、MongoDB での使用目的を説明するために使用されます。この記事の最初の部分では、「$min」演算子がどのように機能し、データベース内の単一のレコードに対して機能しないかについて説明します。つまり、最小値としてレコードを更新または挿入します。また、最後の例は、コレクション レコードをデータベース全体で一意としてグループ化するための使用方法を示しています。