3
如何做一個mysql查詢 在沒有多mapreduct的mongodb中選擇COUNT(DISTINCT ip),COUNT(DISTINCT區域)FROM visit_logs GROUP BY t_hour ?如何在mongodb中做出截然不同的分組?
如何做一個mysql查詢 在沒有多mapreduct的mongodb中選擇COUNT(DISTINCT ip),COUNT(DISTINCT區域)FROM visit_logs GROUP BY t_hour ?如何在mongodb中做出截然不同的分組?
您必須在對象中保留「鍵」的列表,並將計數計算爲不同鍵的計數;這可以在MongoDb的map/reduce的finalize
方法中完成。
喜歡的東西(未經測試):
var mapFn = function() {
emit(this.t_hour, { ips: [this.ip], areas: [this.area]);
};
var reduceFn = function(key, values) {
var ret = { ips: {}, areas: {} };
// objects used as "sets"
var ips = {};
var areas = {};
values.forEach(function(value) {
value.ips.forEach(function(ip) {
if (!ips[ip]) {
ips[ip] = true; // mark as seen
ret.ips.push(ip);
}
});
value.areas.forEach(function(area) {
if (!areas[area]) {
areas[area] = true; // mark as seen
ret.areas.push(area);
}
});
});
};
var finalizeFn = function(key, value) {
return { ips: value.ips.length; areas: value.areas.length };
}
什麼是您的收藏名稱,並在它的對象的結構? – DhruvPathak 2011-06-03 06:05:30