sql >> データベース >  >> NoSQL >> MongoDB

大量のメトリクス/分析データを保存するためのMongoDBアプローチ

    更新された回答

    モンゴシェルで一緒にハッキングされました:

    use pagestats;
    
    // a little helper function
    var pagePerHour = function(pagename) {
        d = new Date();
        return {
            page : pagename,
            year: d.getUTCFullYear(),
            month: d.getUTCMonth(),
            day : d.getUTCDate(),
            hour: d.getUTCHours(),
        }
    }
    
    // a pageview happened
    db.pagestats.update(
        pagePerHour('Hello'),
        { $inc : { views : 1 }},
        true ); //we want to upsert
    
    // somebody tweeted our page twice!
    db.pagestats.update(
        pagePerHour('Hello'),
        { $inc : { tweets : 2 }},
        true ); //we want to upsert
    
    db.pagestats.find();
    // { "_id" : ObjectId("4dafe88a02662f38b4a20193"),
    //   "year" : 2011, "day" : 21, "hour" : 8, "month" : 3,
    //   "page" : "Hello",
    //   "tweets" : 2, "views" : 1 }
    
    // 24 hour summary 'Hello' on 2011-4-21
    for(i = 0; i < 24; i++) {
        //careful: days (1-31), month (0-11) and hours (0-23)
        stats = db.pagestats.findOne({ page: 'Hello', year: 2011, month: 3, day : 21, hour : i})
        if(stats) {
            print(i + ': ' + stats.views + ' views')
        } else {
            print(i + ': no hits')
        };
    }
    

    追跡する側面に応じて、コレクションを追加することを検討できます(たとえば、ユーザー中心の追跡用のコレクション)。お役に立てば幸いです。

    関連項目

    アナリティクスデータに関するブログ投稿



    1. RedisSYNCおよびEXEC

    2. mongoexportを使用して1つのオブジェクトをエクスポートします。_idを指定するにはどうすればよいですか?

    3. MongoDB updateMany with Conditional

    4. ネストされたドキュメントでMongoDbTTLは可能ですか?