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

การใช้ MongoDB 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")
}

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

> 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 }

ต่อไปนี้เป็นแบบสอบถามเพื่อใช้ Mongo DB mapreduce -

> db.demo280.mapReduce(
...   function() { emit(this.isMarried,true); },
...
...   function(key, values) {return Array.sum(values)}, {
...      query:{isMarried:true},
...      out:"Output"
...   }
...)

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้แสดงเอกสารทั้งหมด 2 ฉบับ (อินพุต:2) ที่ตรงกับข้อความค้นหาและผลลัพธ์ 2 รายการถูกปล่อยออกมา (ปล่อย:2) -

{
   "result" : "Output",
   "timeMillis" : 1241,
   "counts" : {
      "input" : 2,
      "emit" : 2,
      "reduce" : 1,
      "output" : 1
   },
   "ok" : 1
}