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

MongoDB Map-Reduce: ประมวลผลข้อมูลขนาดใหญ่เพื่อสรุปผล


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 }