MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pendekatan MongoDB untuk menyimpan data metrik / analitik dalam jumlah besar

Jawaban yang diperbarui

Diretas bersama di shell mongo:

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

Bergantung pada aspek mana yang ingin Anda lacak, Anda dapat mempertimbangkan untuk menambahkan lebih banyak koleksi (mis. koleksi untuk pelacakan yang berpusat pada pengguna). Semoga membantu.

Lihat juga

Pos blog tentang Data Analytics



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Banyak Master di ReplicaSet

  2. Konversi bidang MongoDB dari String ke ISODate dalam array

  3. MongoDB + nodejs:bagaimana cara menanyakan bidang ISODate?

  4. Kesalahan transaksi PyMongo:Nomor transaksi hanya diperbolehkan pada anggota kumpulan replika atau mongos

  5. Mengekstrak daftar substring dari MongoDB menggunakan Ekspresi Reguler