簡體   English   中英

貓鼬預匯總報告

[英]mongoose pre-aggregated reports

以下官方mongodb文檔( http://docs.mongodb.org/manual/use-cases/pre-aggregated-reports/#log-an-event ),我試圖在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編程方式構建$inc對象,然后將其包含在update調用中。

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");
    }           
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM