Map-Reduce là mô hình xử lý dữ liệu lớn: map emit key-value, reduce gom nhóm giá trị theo key.
Tạo collection demo280:
> db.demo280.insertOne({"CustomerName":"Chris","isMarried":true});
> db.demo280.insertOne({"CustomerName":"Mike","isMarried":false});
> db.demo280.insertOne({"CustomerName":"David","isMarried":false});
> db.demo280.insertOne({"CustomerName":"Bob","isMarried":true});
Map-Reduce: đếm số người theo isMarried (query chỉ lấy isMarried=true):
> db.demo280.mapReduce(
function(){emit(this.isMarried,true);},
function(key,values){return Array.sum(values);},
{query:{isMarried:true}, out:"Output"}
);
Kết quả: input=2 document khớp query, emit=2, reduce=1, output=1 collection "Output":
{
"result" : "Output",
"timeMillis" : 1241,
"counts" : {"input":2,"emit":2,"reduce":1,"output":1},
"ok" : 1
}
Lưu ý: Từ MongoDB 5.0+, Map-Reduce deprecated, nên dùng Aggregate Pipeline thay thế.