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

MongoDBで各グループの最大アイテムを選択するにはどうすればよいですか?


$groupを使用できます。ドキュメントを使用してコレクションを作成しましょう-

> db.demo659.insertOne({Name:"Chris",CountryName:"US","Marks":50});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1a50724113ea5458c7cf9")
}
> db.demo659.insertOne({Name:"David",CountryName:"US","Marks":60});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1a50724113ea5458c7cfa")
}
> db.demo659.insertOne({Name:"Mike",CountryName:"US","Marks":55});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1a50724113ea5458c7cfb")
}
> db.demo659.insertOne({Name:"Chris",CountryName:"UK","Marks":75});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1a50724113ea5458c7cfc")
}
> db.demo659.insertOne({Name:"David",CountryName:"UK","Marks":54});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1a50724113ea5458c7cfd")
}
> db.demo659.insertOne({Name:"Mike",CountryName:"UK","Marks":72});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea1a50824113ea5458c7cfe")
}

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

> db.demo659.find();

これにより、次の出力が生成されます。それぞれから最大のマークを見つけます。つまり、CountryNameUSとUK-

{ "_id" : ObjectId("5ea1a50724113ea5458c7cf9"), "Name" : "Chris", "CountryName" : "US", "Marks" : 50 }
{ "_id" : ObjectId("5ea1a50724113ea5458c7cfa"), "Name" : "David", "CountryName" : "US", "Marks" : 60 }
{ "_id" : ObjectId("5ea1a50724113ea5458c7cfb"), "Name" : "Mike", "CountryName" : "US", "Marks" : 55 }
{ "_id" : ObjectId("5ea1a50724113ea5458c7cfc"), "Name" : "Chris", "CountryName" : "UK", "Marks" : 75 }
{ "_id" : ObjectId("5ea1a50724113ea5458c7cfd"), "Name" : "David", "CountryName" : "UK", "Marks" : 54 }
{ "_id" : ObjectId("5ea1a50824113ea5458c7cfe"), "Name" : "Mike", "CountryName" : "UK", "Marks" : 72 }

以下は、各グループの最大アイテムを選択するためのクエリです-

> db.demo659.aggregate( { $group: {
...    _id: {CountryName: "$CountryName" },
...    'MaxMarks': { $max : "$Marks" }
... }})

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

{ "_id" : { "CountryName" : "UK" }, "MaxMarks" : 75 }
{ "_id" : { "CountryName" : "US" }, "MaxMarks" : 60 }

  1. 日付をMongoDB$matchと一致させる方法は?

    日付を一致させるには、aggregate()とともに$matchを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo491.insertOne({"ShippingDate":new ISODate("2020-01-10")});{    "acknowledged" : true,    "insertedId" : ObjectId("5e849a09b0f3fa88e22790be") } > db.d

  2. MongoDBで平均を超える値のドキュメントを選択するにはどうすればよいですか?

    MongoDBでaggregate()を使用して、平均を超える値を持つドキュメントを選択します。平均を見つけるには、MongoDBで$avgを使用します。 ドキュメントを使用してコレクションを作成しましょう- find()メソッドを使用してコレクションからすべてのドキュメントを表示する- db.demo552.find(); これにより、次の出力が生成されます- {_id:ObjectId( 5e8e3b1c9e5f92834d7f05ea)、 values:10} {_id:ObjectId( 5e8e3b1f9e5f92834d7f05eb)、 values:50} {_id