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

Bagaimana cara mendesain skema MongoDB untuk agregator artikel Twitter

dua tip umum:1.) jangan takut untuk menduplikasi. Seringkali merupakan ide yang baik untuk menyimpan data yang sama dengan format yang berbeda dalam koleksi yang berbeda.

2.) jika Anda ingin mengurutkan dan meringkas hal-hal, ini membantu untuk menjaga bidang hitung di mana-mana. metode pembaruan atom mongodb bersama dengan perintah upsert memudahkan untuk menghitung dan menambahkan bidang ke dokumen yang ada.

Berikut ini pasti cacat karena diketik dari atas kepala saya. Tapi lebih baik contoh buruk daripada tidak ada contoh menurut saya;)

colletion tweets:

{
  tweetid: 123,
  timeTweeted: 123123234,  //exact time in milliseconds
  dayInMillis: 123412343,  //the day of the tweet kl 00:00:00
  text: 'a tweet with a http://lin.k and an http://u.rl',
  links: [
     'http://lin.k',
     'http://u.rl' 
  ],
  linkCount: 2
}

collection links: 

{
   url: 'http://lin.k'
   totalCount: 17,
   daycounts: {
      1232345543354: 5, //key: the day of the tweet kl 00:00:00
      1234123423442: 2,
      1234354534535: 10
   }
}

tambahkan tweet baru:

db.x.tweets.insert({...}) //simply insert new document with all fields

//for each found link:
var upsert = true;
var toFind =  { url: '...'};
var updateObj = {'$inc': {'totalCount': 1, 'daycounts.12342342': 1 } }; //12342342 is the day of the tweet
db.x.links.update(toFind, updateObj, upsert);

Dapatkan sepuluh tautan teratas yang diurutkan berdasarkan jumlah tweet yang mereka miliki?

db.x.links.find().sort({'totalCount:-1'}).limit(10);

Dapatkan tautan yang paling banyak di-tweet untuk tanggal tertentu?

db.x.links.find({'$gt':{'daycount.123413453':0}}).sort({'daycount.123413453':-1}).limit(1); //123413453 is the day you're after

Dapatkan tweet untuk tautan?

db.x.tweets.find({'links': 'http://lin.k'});

Dapatkan sepuluh tweet terbaru?

db.x.tweets.find().sort({'timeTweeted': -1}, -1).limit(10);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Operasi Dorong di MongoDB

  2. Grup MongoDB berdasarkan elemen dalam array

  3. Mengumumkan ClusterControl 1.4.2 - Edisi DevOps

  4. Koneksi soket SSL aplikasi Django ke firmware

  5. Performa penulisan MongoDB buruk pada koleksi besar dengan 50.000.000 dokumen plus