草庐IT

mapReduce

全部标签

mongodb - 使用 mapReduce 选择一行中的所有字段

我在nodejs中使用mongoose。我正在使用mapReduce来获取按字段分组的数据。所以它作为一个集合给我的只是来自数据库每一行的分组字段的键。我需要从数据库中获取按一个字段分组并根据另一个字段排序的所有字段。例如:我有一个数据库,其中包含前往这些地方和其他一些字段的地点和票价的详细信息。现在我需要以这样一种方式获取数据,即根据按票价为他们排序的地点对数据进行分组。MapReduce帮助我得到它,但我无法得到其他字段。有没有办法使用mapreduce获取所有字段,而不是像上面示例中提到的那样只获取两个字段? 最佳答案 我必须

mongodb - Mongo 映射/减少大型集合的减速

我们有一个看似简单的map/reduce作业,它每天都要处理日志记录数据。在开发服务器上,我们可以对大量文档(约1M)运行此作业,大约需要一分钟,没有任何问题。我们将作业移至生产服务器,即AmazonEC2服务器,该作业将以非常快的速度处理大约50%的行,然后爬取其余数据。浏览数十万份文件可能需要数小时,而不是预期的一两分钟。所以我希望我们在map/reduce作业中犯了一个明显的错误。这是一个示例输入文档:{"_id":ObjectId("4f147a92d72b292c02000057"),"cid":25,"ip":"123.45.67.89","b":"Mozilla/5.0(

MongoDB GROUP BY 和 COUNT 未知键

我正在尝试对每个Mongo文档中的每个键进行GROUPBY和COUNT,但键可能因文档而异。我知道如何通过像这样显式调用每个键来进行分组和计数:db.test.aggregate([{"$group":{_id:"$vcenter",count:{$sum:1}}}])但是我如何在不必调出键的情况下遍历每个文档的每个键。我在考虑mapreduce函数?这是一个示例文档:“key1”:“vmx”,“key2”:“类型”,"key3":"cpu-idle",我正在寻找每个键有多少条记录,例如:“key1”:1564“key2”:1565“键3”:458 最佳答案

performance - 我们如何改进MongoDB MapReduce函数,该函数需要很长时间才能检索数据并导致内存不足错误?

从mongo检索数据花费的时间太长,即使对于小数据集也是如此。对于更大的数据集,我们会得到javascript引擎的内存不足错误。我们尝试了几种模式设计和几种检索数据的方法。如何优化mongodb/mapreduce函数/mongowire以更快地检索更多数据?我们对MongoDB还不是很有经验,因此不确定我们是否遗漏了优化步骤,或者只是使用了错误的工具。1。背景为了绘图和回放,我们希望随着时间的推移存储多个对象的更改。目前我们每个项目有几十个对象,但我们需要存储数千个对象。对象可能每秒更改一次,也可能长时间不更改。delphi后端通过mongowire和superobjects对mo

mongodb - 如何只返回选定的几个嵌入对象的对象?

我的结构如下:{day:x,events:[{year:y,info:z}]}到目前为止,我创建了以下查询,我没有返回错误但也显示了任何内容(这是错误的)。db.days.aggregate([{$match:{$and:[{'day':'March_13'},{'events.year':'1870'},{'events.info':{$regex:"./French./"}}]}},{$unwind:{path:"$events"},},{$match:{'info':{$regex:'.*French.*'}}}])根据我的阅读,我需要按_id分组,但我不知道如何用满足第二个$m

mongodb - mongodb - map 减少和查找

是否可以在同一个查询管道中高效地同时执行mapreduce和lookup?假设我有两个集合:项目:{_id,group_id,createdAt}购买:{_id,item_id}我想根据每组最近x件商品的购买次数获得前n件商品组。如果我在商品文档中有可用的购买数量,那么我可以聚合和排序,但事实并非如此。我可以获得每组最近的x项:letx=3;letmap=function(){emit(this.group_id,{items:[this]});};letreduce=function(key,values){return{items:getLastXItems(x,values.ma

javascript - 通过正则表达式匹配计算 MongoDB 中的记录

我在数据库中有包含URL的记录。例如,https://www.youtube.com/watch?v=blablabla。我想计算每个站点的URL。例如[{site:'youtube.com',count:25},{site:'facebook.com',count:135}]我使用了这个聚合管道:db.getCollection('records').aggregate([{'$match':{'url':/.*youtube\.com.*/}},//youtubeforexample{'$group':{'_id':{'site':'$url','count':{'$sum':1}

mongodb - mongodb mapreduce 函数是否接受文档的计算值作为映射器

我使用MongoDB2.6.10版。下面是集合结构。我使用MapReduce函数根据(创建(不包括秒))、事件名称对用户名称进行分组。{"_id":ObjectId("59c11d79078dc54153c36ee8"),"event_name":"notification","created":ISODate("2017-09-19T13:36:57.252Z"),"sender_name":"nathan","user_name":"Ragul"",}{"_id":ObjectId("59c11d79078dc54153c36eeb"),"event_name":"notifica

javascript - Mongodb mapreduce 遍历对象的键值对

我有一个包含以下数据的mongodb集合:{"_id":ObjectId("4da31b8b5ba19e3c11345a66"),"USERID":4,"datekey":"BIBAK","balancekey":"MAIYM"}{"_id":ObjectId("4da31b8b5ba19e3c12345a66"),"USERID":4,"datekey":"QOTWH","balancekey":"SFEYQ"}{"_id":ObjectId("4da31b8b5ba19e3c14345a66"),"USERID":4,"datekey":"TLWJJ","balancekey":"

mongodb - 如何使用计算值在 MongoDB 中批量更新服务器上的文档?

我有一些东西,每件东西都有一些用户评论,每条评论都有一个数字(1-5)评级。我想定期运行一个批处理作业,该作业将根据每个“事物”的用户评论中的个人评级计算每个“事物”的平均评级,然后使用该新评级再次保存“事物”。我希望这种情况发生在服务器上,而无需下载和上传每个文档。换句话说,我正在寻找一种解决方案,它将迭代我收藏中的所有内容,对用户评论的评分求和,然后将该总和除以评分计数(从而得到平均值)并将该平均值存储在每个文档的属性。我一开始尝试用map/reduce来解决这个问题,比如:function(){varrating=0;for(vari=0;i评级似乎计算正确,但我无法在第一个或第