Map-Reduce คืออะไร
Map-reduce เป็นพาราดายม์การประมวลผลข้อมูล เพื่อบีบอัดข้อมูลปริมาณมากให้เป็นผลลัพธ์สรุปที่มีประโยชน์
สร้างคอลเลกชันตัวอย่าง
> db.demo280.insertOne({"CustomerName":"Chris","isMarried":true});
{ "acknowledged": true, "insertedId": ObjectId("5e49116edd099650a5401a62") }
> db.demo280.insertOne({"CustomerName":"Mike","isMarried":false});
{ "acknowledged": true, "insertedId": ObjectId("5e491170dd099650a5401a63") }
> db.demo280.insertOne({"CustomerName":"David","isMarried":false});
{ "acknowledged": true, "insertedId": ObjectId("5e491170dd099650a5401a64") }
> db.demo280.insertOne({"CustomerName":"Bob","isMarried":true});
{ "acknowledged": true, "insertedId": ObjectId("5e491171dd099650a5401a65") }
แสดงข้อมูล
> db.demo280.find();
{ "_id": ObjectId("5e49116edd099650a5401a62"), "CustomerName": "Chris", "isMarried": true }
{ "_id": ObjectId("5e491170dd099650a5401a63"), "CustomerName": "Mike", "isMarried": false }
{ "_id": ObjectId("5e491170dd099650a5401a64"), "CustomerName": "David", "isMarried": false }
{ "_id": ObjectId("5e491171dd099650a5401a65"), "CustomerName": "Bob", "isMarried": true }
คิวรี Map-Reduce: นับจำนวนที่ isMarried=true
> db.demo280.mapReduce(
function() { emit(this.isMarried, true); },
function(key, values) { return Array.sum(values); },
{
query: { isMarried: true },
out: "Output"
}
)
ผลลัพธ์: input 2, emit 2, reduce 1, output 1
{ "result": "Output", "timeMillis": 1241, "counts": { "input": 2, "emit": 2, "reduce": 1, "output": 1 }, "ok": 1 }