Node.js 我应该在mongo还是服务器端使用mapReduce?
关于是否直接在mongoDb上使用mapReduce,或者获取结果然后使用mapReduce,有什么见解吗 我想在一些文档上构建一些自定义查询。假设它类似于在我的文档中有一个myArray值,即Node.js 我应该在mongo还是服务器端使用mapReduce?,node.js,mongodb,mapreduce,Node.js,Mongodb,Mapreduce,关于是否直接在mongoDb上使用mapReduce,或者获取结果然后使用mapReduce,有什么见解吗 我想在一些文档上构建一些自定义查询。假设它类似于在我的文档中有一个myArray值,即 myArray: [ { event: 'foo', timestamp: 1, }, { event: 'bar', timestamp: 2, }, { event: 'baz', timestamp: 3, }, ] 我想知道f
myArray: [
{
event: 'foo',
timestamp: 1,
}, {
event: 'bar',
timestamp: 2,
}, {
event: 'baz',
timestamp: 3,
},
]
我想知道foo和bar之间的平均时间
据我所知,我可以构建一个mongo查询来映射我的集合并给出结果
或者,我可以简单地查询myArray键,并将结果映射为我想要的结果
这两种方法都有利弊吗
[编辑]请注意,我不是问如何编写mapreduce代码,而是问是否应该编写数据库端或服务器端的代码。服务器端的速度更快,但使用应用程序代码重载db服务器并不总是明智的,而且数据库资源通常比一般后端机器上的数据库资源要昂贵得多
无论如何,更快、更可控的是:如果你的算法合适,这是正确的选择。你尝试过的代码在哪里?你还没有编写它。我很清楚如何写出这两种解决方案,但是我无法决定一种方法是否比另一种方法更好假设您使用的是mapReduce,因为查询处理的是一个大型集合,并且输出的数据将是该数据的一个较小的外推,为什么您要浪费时间从mongo服务器检索所有文档,同时假设您的mongo服务器不在同一个服务器上在执行mapReduce之前使用服务器?即使是一个小的集合,MangGDB是用C++编写的,所以MapReduce可能比使用JavaScript更能发挥作用。