Articles of mapreduce

在MongoDB中按date分组

我正在AppFog上运行一个博客式的Web应用程序(前Nodester)。 它是用NodeJS + Express编写的,使用Mongoose框架保存到MongoDB。 MongoDB是1.8版本,我不知道AppFog是否会升级到2.2。 为什么介绍这个? 那么,现在我的“post”显示在一个基本的“分页”的可视化,我的意思是他们只是从mongo拿起,按date降序sorting,一页一页。 这是一个片段: Post .find({pubblicato:true}) .populate("commenti") .sort("-dataInserimento") .skip(offset) .limit(archivePageSize) .exec(function(err,docs) { var result = {}; result.postsArray = (!err) ? docs : []; result.currentPage = currentPage; result.pages = howManyPages; cb(null, result); }); 现在,我的目标是GROUP BY'dataInserimento'和显示post就像一个“日记”,我的意思是: 第一页=> 2012/10/08:我显示3post 第二页=> 2012/10/10:我显示2post(2012/10/09没有post,所以我不允许一个白页) 第3页=> 2012/10/11:35post等等… 我的想法是首先获得所有date列表(也许每天计算post),然后build立页面链接,并且当页面(date)被访问时,像上面那样查询,添加date作为参数。 解决scheme : 汇总框架将是完美的,但我现在无法得到这个版本的Mongo 以某种方式使用.group(),但它在分片环境中不起作用的想法不会激起我的兴趣! 🙁 写MAP-REDUCE! 我认为这是正确的路要走,但我无法想象如何写map()和reduce()。 你能帮我一个小例子吗? 谢谢 编辑 […]

通过协会的mongoose限制

我有这样一个集合: [ { parent: 'a', d1: '1', d2: '2', d3: '3', w: 10 }, { parent: 'a', d1: '1', d2: '2', d3: '3', w: 20 }, { parent: 'a', d1: '1', d2: '2', d3: '3', w: 30 }, { parent: 'a', d1: '1', d2: '2', d3: '3', w: 40 }, { parent: 'a', d1: '1', […]

mapReduce使用node.js和mongoose

我正在设法计算每个地区的学生人数。 我有一个模型 ,看起来像 var mongoose = require('mongoose'); var schema = mongoose.Schema; var studentSchema = new mongoose.Schema( { "name":String, "address" :{ "locality":String } }); module.exports = mongoose.model('Student', studentSchema); 然后我有一些Node.js代码 var Student = require('../../../models/Student'); module.exports.getStudentsBasedOnLocality = function(){ var o = {}; o.map = function () { emit(Student.address.locality, 1) } o.reduce = function (k, vals) { return vals.length […]

如何转换mongo ObjectId .toString不包括'ObjectId()'包装 – 只是值?

我想要解决的是:使用这个build议的方法(mapReduce)保存我的ID数组$ in的顺序: 是否MongoDB的$ in子句保证顺序 我做了功课,看到了将它们转换为string的理想select: 比较mongoose_id和string 。 码: var dataIds = [ '57a1152a4d124a4d1ad12d80', '57a115304d124a4d1ad12d81', '5795316dabfaa62383341a79', '5795315aabfaa62383341a76', '57a114d64d124a4d1ad12d7f', '57953165abfaa62383341a78' ]; CollectionSchema.statics.all = function() { var obj = {}; //adds dataIds to obj.scope as inputs , to be accessed in obj.map obj.scope = {'inputs': dataIds}; obj.map = function() { //used toString method as suggested in other SO […]

试图获得MongoDB字段中每个单词的计数是MapReduce的工作吗?

我collections了一大堆正文post。 例如: posts = { { id: 0, body: "foo bar baz", otherstuff: {…} }, { id: 1, body: "baz bar oof", otherstuff: {…} }, { id: 2, body: "baz foo oof", otherstuff: {…} } }; 我想弄清楚如何遍历集合中的每个文档,并对每个文章主体中的每个单词进行计数。 post_word_frequency = { { foo: 2 }, { bar: 2 }, { baz: 3 }, { oof: 2 […]

lodash _.map比Node.js映射更快吗?

我有一个项目,我在哪里使用_.map 。 现在我有需要改善它的性能,并想知道是否有任何时间性能的好处,使用_.map而不是[…].map 。

使用Array进行MongoDB正则expression式search

我正在寻找一个逻辑来从数据库中检索数据从1000个logging。 我不能在应用程序级别做。 我有数据结尾两个双胞胎字母,如“ll,gg,ss,ff …”。 想要检索以上述双字符结尾的单词。 我的样品DB: [{ "word": "Floss" }, { "word": "smacx" }, { "word": "fuzz" }, { "word": "grass" }, { "word": "dress" }, { "word": "puff" }, { "word": "cliff" }, { "word": "sniff" }, { "word": "chess" }, { "word": "kiss" }, { "word": "fell" }, { "word": "shell" }] checkarray […]

为一个排名algorithm分页mongoosemapReduce

我正在使用MongoDB mapReduce编码一个排名饲料algorithm,它几乎可以工作,但最新的实施是分页。 地图减less支持结果的限制,但我怎么能实现偏移(跳过),例如根据结果的最新查看_ID,知道我正在使用mongoose? 这是我写的程序: o = {}; o.map = function() { //log10(likes+comments) / elapsed hours from the post creation emit(Math.log(this.likes + this.comments + 1) / Math.LN10 / Math.abs((now – this.createdAt) / 6e7 + 1), this); }; o.reduce = function(key, values) { //sort the values, when they have the same score values.sort(function(a, b) { a.createdAt – […]

在NodeJS中操作数据的最佳方式是什么?

我正在编写一个从广告平台获取一些数据的应用程序。 我的数据结构如下所示: { campaign_id: 123, campaign_name: SomeName, subcampaigns: [ {country: Australia, impressions: 12000, cost: 12}, {country: Australia, impressions: 14000, cost: 17}, {country: Singapore, impressions: 10000, cost: 7}, {country: Singapore, impressions: 7000, cost: 6} ] } 我需要把它变成这样的东西: [{ campaign_name: SomeName, country: Australia, impressions: 36000 cost: 29 }, { campaign_name: SomeName, country: Singapore impressions: 17000 cost: 13 […]

MapReduce删除重复的string

我有一个地图function,从电子邮件ID找出域名,并发出一个减lessfunction,计数域的数量。 [ { email:"xyz@gmail.com"}, { email:"abc@abc.com"}, { email:"inder@hotmail.com"}, { email:"Ravi@Hotmail.com"}, { email:"xxx@GMail.com"}, ] 这是function db.collection.mapReduce( function() { emit(this.email.substr(this.email.indexOf('@') + 1), 1); }, function(host, count) { return Array.sum(count) ; }, { out: "hosts" } ) 输出是好的: – gmail.com abc.com hotmail.com Hotmail.com GMail.com 但是我想要的是 gmail.com abc.com hotmail.com 我不希望域名与<.com>之前的同名大写字母重复。 任何想法如何删除与大写字母重复。 或者任何相关的例子也不错。