我是Mongo Node.js驱动程序的新手。我的问题是,我在Mongo中设置了一个时间戳(以毫秒为单位),现在我尝试按秒分组。时间戳是一个数字(Int64的),我想拥有它编组和由1000MongoDB Node.js组按计算键
我的MongoDB壳牌查询与统计司工作正常:
db.default.group(
{
keyf: function(doc) {
var secs = (doc.timestamp/1000).toFixed();
return {'data':secs};
},
cond: {source:1},
initial: {count:0},
reduce: function(obj, prev) {prev.count++;}
})
我的问题是我不能去上班我Node.js查询:
var keyf = function(doc) {
var secs = (doc.timestamp/1000).toFixed();
return {'data': secs};
};
collection.group(keyf, {}, {"count":0},
"function(obj, prev){prev.count++;}", false, function(err,results) {
console.log(results);
});
看起来好像组从未注意到keyf函数。有任何想法吗?
您是否尝试过使用该聚合框架?它比服务器端JavaScript方法更快。顺便说一下,我认为在聚合框架中实现按截断数除1000的逻辑很难。你能解释哪些要求来自哪里?你有毫秒的时间,你想第二个文件分组? – wdberkeley 2015-02-13 16:26:22
是的,那是对的。我只想要秒,而我只有毫秒。要求是我想测量性能,并且我需要在不同的计算中以milis来计算它的精度。另一方面,我想有几秒钟就可以将它放入带有数字的图表(绘图)中。将它聚合到服务器中,可以做数据库的用途。另一种解决方案(我无法在网上找到)是将查询发送到数据库并将结果返回给服务器。在node.js中 – Tomasch 2015-02-15 17:48:25
如果您的时间戳是日期类型而不是数字,它将在聚合框架中工作。我总是建议使用时间值的日期类型。你能切换吗? – wdberkeley 2015-02-17 17:11:01