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

ดึงข้อมูลระหว่างสองวันที่และมีค่าเฉพาะใน MongoDB จัดกลุ่มและหาผลรวมกับจำนวน


เพื่อจับคู่ ให้ใช้ $match ใน MongoDB และเพื่อดึงข้อมูลระหว่างสองวันที่ ให้ใช้ $gte และ $lte มาสร้างคอลเลกชันพร้อมเอกสารกันก่อน

> db.demo560.insertOne({"value1":40,"value2":40,shippingDate:new ISODate("2020-02-26")});{    "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e867") } > db.demo560.insertOne({"value1":20,"value2":60,shippingDate:new ISODate("2020-02-26")});{    "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e868") } > db.demo560.insertOne({"value1":40,"value2":70,shippingDate:new ISODate("2020-03-31")});{    "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e869") } > db.demo560.insertOne({"value1":40,"value2":130,shippingDate:new ISODate("2020-03-31")});{    "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e86a") }

แสดงเอกสารทั้งหมดจากคอลเลกชันด้วยเมธอด find()

> db.demo560.find();

จะได้ผลลัพธ์ดังนี้

{ "_id" : ObjectId("5e8f3d5254b4472ed3e8e867"), "value1" : 40, "value2" : 40, "shippingDate" : ISODate("2020-02-26T00:00:00Z") } { "_id" : ObjectId("5e8f3d5254b4472ed3e8e868"), "value1" : 20, "value2" : 60, "shippingDate" : ISODate("2020-02-26T00:00:00Z") } { "_id" : ObjectId("5e8f3d5254b4472ed3e8e869"), "value1" : 40, "value2" : 70, "shippingDate" : ISODate("2020-03-31T00:00:00Z") } { "_id" : ObjectId("5e8f3d5254b4472ed3e8e86a"), "value1" : 40, "value2" : 130, "shippingDate" : ISODate("2020-03-31T00:00:00Z") }

คำสั่งสำหรับดึงข้อมูลระหว่างสองวันที่และมีค่าเฉพาะ ที่นี่ value1 40 เป็นค่าเฉพาะของเรา

> db.demo560.aggregate([ ... { ...    $match: { ...       "value1": 40, ...       "shippingDate": { ...          "$gte": ISODate("2020-02-26"), ...          "$lte": ISODate("2020-03-31") ...       } ...    } ... }, ... { ...    $group: { ...       "_id": "$shippingDate", ...       total: { ...          $sum: '$value2' ...       }, ...       count: { ...          $sum: 1 ...       } ...    } ... } ... ])

จะได้ผลลัพธ์ดังนี้

{ "_id" : ISODate("2020-03-31T00:00:00Z"), "total" : 200, "count" : 2 } { "_id" : ISODate("2020-02-26T00:00:00Z"), "total" : 40, "count" : 1 }