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

เรียงลำดับอาร์เรย์และโปรเจกต์ทุกฟิลด์ใน MongoDB Query

เพื่อเรียงลำดับอาร์เรย์ ใช้ $sort สำหรับการโปรเจกต์ (Projection) ใช้ $project ใน aggregate() ของ MongoDB

สร้างคอลเลกชันพร้อมเอกสารที่มีอาร์เรย์ Values:

> db.demo252.insertOne( 
...     {"Values" : [ { "v1" : 20, "v2" :30 }, { "v1" : 20, "v2" : 20 }, { "v1" : 10, "v2" : 7 } ] } 
... ); 
{ "acknowledged" : true, "insertedId" : ObjectId("5e46c2761627c0c63e7dba78") }

แสดงเอกสารทั้งหมด:

> db.demo252.find();

ผลลัพธ์ - อาร์เรย์ Values ยังไม่ได้เรียงลำดับ:

คำสั่ง Aggregation: ใช้ $unwind แยกอาร์เรย์, $sort เรียงตาม v2 แล้ว v1, $group รวมกลับเป็นอาร์เรย์, $project ปรับรูปแบบ _id:

> db.demo252.aggregate([ 
...     { "$unwind": "$Values"}, 
...     { "$sort": {"Values.v2":1, "Values.v1": 1}}, 
...     { "$group": { 
...         "_id": { "_id": "$_id" }, 
...         "st": { "$push":"$Values"} 
...     }}, 
...     { "$project": { 
...         "_id": "$_id._id", 
...         "Values": "$st" 
...     }} 
...]);

ผลลัพธ์ - อาร์เรย์ Values ถูกเรียงลำดับตาม v2 แล้ว v1 จากน้อยไปมาก: