数据模型与查询语言
数据模型⌗
关系模型⌗
突出数据之间的关联。
文档模型⌗
数据来自于包含文档,文档间关联很少。
图状数据模型⌗
针对所有数据都可能互相关联。
数据查询语言⌗
Web 上声明式查询⌗
CSS 选择器。
MapReduce 查询⌗
MapReduce 是一种编程模型,用于在许多机器上批量处理海量数据。
MongoDB 中的 MapReduce
db.observations.mapReduce(
function map() { // 2
var year = this.observationTimestamp.getFullYear();
var month = this.obbservationTimestamp.getMonth() + 1;
emit(year + "-" + month, this.numAnimals); // 3
},
function reduce(key, values) { // 4
return Array.sum(values); // 5
},
{
query: {family: "Sharks"}, // 1
out: "monthlySharkReport" // 6
}
);
- 过滤器声明式执行鲨鱼种类(MongoDB 特有扩展)。
- mapper:对于每个匹配的文档都会调用一次这个 JavaScript 函数。
- mapper 发射一个「键-值」对,键是 “2013-12” 格式的字符串,值是动物的数量
- mapper 发射的键值对按键分组,对于相同键的所有「键-值」对,调用 reduce 函数。
- reducer 函数将特定月份的所有观察到的动物数量相加。
- 最终输出写入到
monthlySharkReport
集合中