MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

特定の値の最大出現を含む配列を持つMongoDBドキュメントを検索します


このために、aggregate()を使用できます。まず、ドキュメントを使用してコレクションを作成しましょう-

> db.countOccurrencesDemo.insertOne({"ListOfValues":[65,87,89,65,67,87,87,87]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e06ef9325ddae1f53b621eb")
}
> db.countOccurrencesDemo.insertOne({"ListOfValues":[102,65,87,65,89,65,89,65,89,65]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e06efaa25ddae1f53b621ec")
}

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです-

> db.countOccurrencesDemo.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e06ef9325ddae1f53b621eb"), "ListOfValues" : [ 65, 87, 89, 65, 67, 87, 87, 87 ] }
{ "_id" : ObjectId("5e06efaa25ddae1f53b621ec"), "ListOfValues" : [ 102, 65, 87, 65, 89, 65, 89, 65, 89, 65 ] }

これは、特定の値の最大出現回数を含む配列を持つドキュメントを検索するためのクエリです-

> db.countOccurrencesDemo.aggregate(
...    [
...       { "$project": {
...          "ListOfValues": 1,
...          "OccurencesValue": {
...             "$size": {
...                "$filter": {
...                   "input": "$ListOfValues",
...                   "as": "v",
...                   "cond": { "$eq": [ "$$v", 65] }
...                }
...             }
...          }
...       }},
...       { "$group": {
...          "_id": "$OccurencesValue",
...          "MyValues": { "$push": "$$ROOT" }
...       }},
...       { "$sort": { "_id": -1 } },
...       { "$limit": 1 }
...    ]
... );

これにより、次の出力が生成されます-

{ "_id" : 5, "MyValues" : [ { "_id" : ObjectId("5e06efaa25ddae1f53b621ec"), "ListOfValues" : [ 102, 65, 87, 65, 89, 65, 89, 65, 89, 65 ], "OccurencesValue" : 5 } ] }

  1. C++で最大nCr値を持つ指定された配列からペアを検索します

    コンセプト n個の正の整数の配列arr[]が与えられた場合、タスクは、arr [i]Carr[j]が最大で可能になるように配列から要素arr[i]とarr[j]を決定することです。複数の有効なペアについては、いずれか1つを印刷してください。 入力 arr[] = {4, 1, 2} 出力 4 2 4C1 = 4 4C2 = 4 2C1 = 4 (4, 2) is the only pairs with maximum nCr. メソッド n C r 単調増加関数、つまり n + 1として扱われます。 C r n C r 。この事実を適用して、私たちの答えに近づく

  2. Pythonで最大nCr値を持つ指定された配列からペアを検索します

    n個の整数を持つ配列arrがあるとすると、arr [i] Carr [j]ができるだけ大きくなるように、配列からarr[i]とarr[j]を見つける必要があります。ペアが複数ある場合は、いずれか1つを返却してください。 したがって、入力が[4、1、2]のようである場合、出力は4 C1 =4、4C2 =6、2C1 =2として、4 2になります。したがって、(4,2)は必要に応じてペアになります。 これを解決するには、次の手順に従います- リストを並べ替えるv N:=v [n-1] N mod 2が1と同じ場合、 最初:=N / 2(整数除算) 秒:=最初+1 左:=-1、右:=-1