MongoDB Aggregate groupの複数の結果?
複数の結果を集約するには、MongoDBで$groupを使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo765.insertOne(
...
... {
... Name:"John",
... "Category":"ComputerScience",
... "SubjectName":"MongoDB",
... "Marks":75
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5eb054525637cd592b2a4b01")
}
>
> db.demo765.insertOne(
... {
... Name:"John",
... "Category":"ComputerScience",
... "SubjectName":"MySQL",
... "Marks":85
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5eb054525637cd592b2a4b02")
}
> db.demo765.insertOne(
... {
... Name:"Chris",
... "Category":"10th",
... "SubjectName":"Math",
... "Marks":98
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5eb054535637cd592b2a4b03")
} find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo765.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5eb054525637cd592b2a4b01"), "Name" : "John", "Category" : "ComputerScience", "SubjectName" : "MongoDB", "Marks" : 75 }
{ "_id" : ObjectId("5eb054525637cd592b2a4b02"), "Name" : "John", "Category" : "ComputerScience", "SubjectName" : "MySQL", "Marks" : 85 }
{ "_id" : ObjectId("5eb054535637cd592b2a4b03"), "Name" : "Chris", "Category" : "10th", "SubjectName" : "Math", "Marks" : 98 } 以下は、グループの複数の結果を集計するためのクエリです-
> db.demo765.aggregate([
... { "$facet": {
... "ListOfName": [
... { "$group": {
... "_id": "$Name",
... "Marks": { "$sum": "$Marks" }
... }},
... { "$project": {
... "_id": false,
... "Name": "$_id",
... "Marks": 1
... }}
... ],
... "ListOfCategory": [
... { "$group": {
... "_id": "$Category",
... "Marks": { "$sum": "$Marks" }
... }},
... { "$project": {
... "_id": false,
... "Category": "$_id",
... "Marks": 1
... }}
... ]
... }}
... ]).pretty() これにより、次の出力が生成されます-
{
"ListOfName" : [
{
"Marks" : 98,
"Name" : "Chris"
},
{
"Marks" : 160,
"Name" : "John"
}
],
"ListOfCategory" : [
{
"Marks" : 98,
"Category" : "10th"
},
{
"Marks" : 160,
"Category" : "ComputerScience"
}
]
} -
MongoDBコレクションの日付でグループ化しますか?
日付でグループ化するには、MongoDBアグリゲートで$groupを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo657.insertOne({ ... id: 1, ... Name: "Chris", ... DueDate: new ISODate("2020-04-22") ... } ... ); { "acknow
-
MongoDBアグリゲートで$redactを使用していますか?
$ redactは、ドキュメント自体に格納されている情報に基づいて、ドキュメントの内容を制限します。 $condを$redactと一緒にまとめて使用できます。ドキュメントを使用してコレクションを作成しましょう- > db.demo546.insertOne({"Value1":10,"Value2":20});{ "acknowledged" : true, "insertedId" : ObjectId("5e8e263f9e5f92834d7f05d7") }