MongoDB Node.js按计算密钥分组

时间:2015-02-10 22:11:51

标签: javascript node.js mongodb

我是Mongo Node.js驱动程序的新手。我的问题是,我已经在Mongo中设置了一个时间戳(以毫秒为单位)字段,现在我尝试按秒分组。时间戳是一个数字(Int64),我希望将它分组并用除以1000计算。

我的MongoDB Shell查询工作正常:

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函数。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

.group上没有collection方法,您也必须使用模型

Model.find({}, function(err, docs) { 
    if(err) console.error(err);
    if(!docs) console.log("No docs found!");

    function updater(docs){
        // Get first item of documents 
        doc = docs.unshift();

        // Change
        doc.timestamp = (doc.timestamp/1000).toFixed();

        // Update
        doc.save(function(err){
            if(err)
                console.log(err);
            else
                updater(docs); 
        });
    }
    // Update documents in async
    updater(docs);
});