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

配列要素をMongoDBアグリゲーションの最大値と一致させてグループ化する方法は?


このために、MongoDBで$maxと一緒に$groupを使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo510.insertOne(
... {
...    details:[
...       {
...          Name:"Chris",
...          Score:56
...       },
...       {
...          Name:"David",
...          Score:45
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8845fa987b6e0e9d18f582")
}
> db.demo510.insertOne(
... {
...    details:[
...       {
...          Name:"Chris",
...          Score:56
...       },
...       {
...          Name:"David",
...          Score:47
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8845fb987b6e0e9d18f583")
}
> db.demo510.insertOne(
... {
...    details:[
...       {
...          Name:"Chris",
...          Score:45
...       },
...       {
...          Name:"David",
...          Score:91
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8845fb987b6e0e9d18f584")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo510.find();

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

{ "_id" : ObjectId("5e8845fa987b6e0e9d18f582"), "details" : [ { "Name" : "Chris", "Score" : 56 },
{ "Name" : "David", "Score" : 45 } ] }
{ "_id" : ObjectId("5e8845fb987b6e0e9d18f583"), "details" : [ { "Name" : "Chris", "Score" : 56 },
{ "Name" : "David", "Score" : 47 } ] }
{ "_id" : ObjectId("5e8845fb987b6e0e9d18f584"), "details" : [ { "Name" : "Chris", "Score" : 45 },
{ "Name" : "David", "Score" : 91 } ] }

以下は、集計で最大値を持つ配列要素を照合およびグループ化するためのクエリです-

> db.demo510.aggregate([
... { "$project": {
...    "details": {
...       "$arrayElemAt": [
...          { "$filter": {
...             "input": "$details",
...             "as": "res",
...             "cond": {
...                "$eq": [
...                   "$$res.Score",
...                   { "$max": {
...                      "$map": {
...                         "input": "$details",
...                         "as": "out",
...                         "in": "$$out.Score"
...                      }
...                   }}
...                ]
...             }
...          }},
...          0
...       ]
...    }
... }},
... { "$group": {
...    "_id": "$details.Name",
...    "Name": { "$first": "$details.Name" },
...    "count": { "$sum": 1 }
... }}
... ])

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

{ "_id" : "David", "Name" : "David", "count" : 1 }
{ "_id" : "Chris", "Name" : "Chris", "count" : 2 }

  1. JavaScriptで配列の最大値を見つける方法は?

    Math.max()およびsort()関数を使用して配列の最大値を見つけることができます。 1)Math.max() Math.max()関数は通常、配列内のすべての要素を受け取り、すべての値を精査して最大値を取得します。その方法については、以下の例で説明します。 例 <html> <body> <script>    function maximum(value) { if (toString.call(value) !== "[object Array]") return false;

  2. JavaScriptを使用して同じ配列内の配列の要素を複製するにはどうすればよいですか?

    以下は、同じ配列内の配列の要素を複製するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" > <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &nbs