我现在正在做一些数据分析测试,在第一个,非常简单,我有非常奇怪的结果.
这个想法如下:从互联网访问日志(每个访问的文档集合,测试90万个文档).我希望获得域的访问次数(MySQL中的GROUP BY),并获得10个访问最多的域
我在JavaScript中创建的脚本非常简单:
/* Counts each domain url */
m = function () {
emit(this.domain, 1 );
}
r = function (key, values) {
total = 0;
for (var i in values) {
total += Number(i);
}
return total;
}
/* Store of visits per domain statistics on NonFTP_Access_log_domain_visits collection */
res = db.NonFTP_Access_log.mapReduce(m, r, { out: { replace : "NonFTP_Access_log_domain_visits" } } );
db.NonFTP_Access_log_domain_visits.ensureIndex({ "value": 1});
db.NonFTP_Access_log_domain_visits.find({}).sort({ "value":-1 }).limit(10).forEach(printjson);
Run Code Online (Sandbox Code Playgroud)
MySQL中的等价物是:
drop table if exists NonFTP_Access_log_domain_visits;
create table NonFTP_Access_log_domain_visits …
Run Code Online (Sandbox Code Playgroud) 我正在为一个简单的 MongoDB 数据库设计架构,其中将为客户提供一个集合。
识别客户的自然方式是使用他们的官方身份证 ID(6 个数字和一个字母,每个人在该国都是唯一的)。另一种方法是让 MongoDB 选择 _id 字段值并使用卡 id 作为另一个字段。
选择一个由 6 个数字和一个字母组成的字符串作为 _id,或者选择 Mongo 创建的 ObjectId 的优点/缺点有什么建议吗?