Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

รับรายการค่าโดยใช้ MongoDB $group หรือไม่


หากต้องการรับรายการค่า ให้ใช้การรวมกลุ่ม $พร้อมกับตัวดำเนินการ $push ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> db.groupByDemo.insertOne({"UserName":"John","Subject":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd69f0457806ebf1256f136")
}
> db.groupByDemo.insertOne({"UserName":"Larry","Subject":"MySQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd69f0657806ebf1256f137")
}
> db.groupByDemo.insertOne({"UserName":"John","Subject":"Java"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd69f0d57806ebf1256f138")
}
> db.groupByDemo.insertOne({"UserName":"John","Subject":"C"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd69f1357806ebf1256f139")
}
> db.groupByDemo.insertOne({"UserName":"Larry","Subject":"SQL Server"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd69f1c57806ebf1256f13a")
}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> db.groupByDemo.find().pretty();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{
   "_id" : ObjectId("5cd69f0457806ebf1256f136"),
   "UserName" : "John",
   "Subject" : "MongoDB"
}
{
   "_id" : ObjectId("5cd69f0657806ebf1256f137"),
   "UserName" : "Larry",
   "Subject" : "MySQL"
}
{
   "_id" : ObjectId("5cd69f0d57806ebf1256f138"),
   "UserName" : "John",
   "Subject" : "Java"
}
{
   "_id" : ObjectId("5cd69f1357806ebf1256f139"),
   "UserName" : "John",
   "Subject" : "C"
}
{
   "_id" : ObjectId("5cd69f1c57806ebf1256f13a"),
   "UserName" : "Larry",
   "Subject" : "SQL Server"
}

ต่อไปนี้เป็นแบบสอบถามเพื่อรับรายการค่าโดยใช้ $group และ $push -

> db.groupByDemo.aggregate({$group: { '_id': '$UserName', 'Subject': { $push: '$Subject'}}});

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : "Larry", "Subject" : [ "MySQL", "SQL Server" ] }
{ "_id" : "John", "Subject" : [ "MongoDB", "Java", "C" ] }