Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongoose预聚合报告_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript mongoose预聚合报告

Javascript mongoose预聚合报告,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,在官方的mongodb文档()之后,我正在尝试在nodejs+mongoose中设置相同的文档,但有一个问题我无法解决 问题在于$inc key:value,我无法像在python中那样计算动态键: update = { '$inc': { 'hourly.%d' % (hour,): 1, 'minute.%d.%d' % (hour,minute): 1 } } 我的代码如下所示: var daily_schema = mongoose

在官方的mongodb文档()之后,我正在尝试在nodejs+mongoose中设置相同的文档,但有一个问题我无法解决

问题在于$inc key:value,我无法像在python中那样计算动态键:

 update = { '$inc': {
            'hourly.%d' % (hour,): 1,
            'minute.%d.%d' % (hour,minute): 1 } 
 }
我的代码如下所示:

var daily_schema = mongoose.Schema({
    _id: 'string',
    metadata: {
        date: { type: 'date', default: Date.now() },
        site: 'string',
        page: 'string'
    },
    hourly: 'object',
    minute: 'object'    
});

var daily_stats = mdb.model('hits', daily_schema);

var date = new Date();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var year = date.getFullYear();

daily_stats.update({
    _id : year + '/' + data.xid + '/' + data.url,
    metadata : {
        date : date,
        site : data.xid,
        page : data.url
    }
    },
    {
    $inc: { 
        'hourly.' + hour : 1, // (python: 'hourly.%d' % (hour,): 1,) how about javascript?
        'minute.' + hour + '.' + minute : 1
    }
    },
    { upsert: true }, function(err) {
        if (err) { console.log("daily_stats:upsert:error"); console.log(err) } else {
        console.log("daily_stats:upsert:ok");
    }           
    }
);
请给我一个提示,如何在javascript中实现这一点


向所有人致以最良好的问候和感谢

首先需要以编程方式构建
$inc
对象,然后将其包含在
更新
调用中

var inc = { $inc: {} };
inc.$inc['hourly.' + hour] = 1;
inc.$inc['minute.' + hour + '.' + minute] = 1;

daily_stats.update({
    _id : year + '/' + data.xid + '/' + data.url,
    metadata : {
        date : date,
        site : data.xid,
        page : data.url
    }},
    inc,
    { upsert: true }, function(err) {
        if (err) { console.log("daily_stats:upsert:error"); console.log(err) } else {
        console.log("daily_stats:upsert:ok");
    }           
});