MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да проектирам схема на MongoDB за агрегатор на статии в Twitter

два общи съвета:1.) не се страхувайте да дублирате. Често е добра идея едни и същи данни да се съхраняват различно форматирани в различни колекции.

2.) ако искате да сортирате и обобщавате неща, помага да запазите полетата за преброяване навсякъде. Методът за атомарно актуализиране на mongodb заедно с командите upsert улесняват преброяването и добавянето на полета към съществуващи документи.

Следващото със сигурност е грешно, защото е написано от върха на главата ми. Но по-добре лоши примери, отколкото никакви примери според мен;)

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
   }
}

добави нов туит:

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

Получавате ли първите десет връзки, сортирани по брой туитове, които имат?

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

Получавате ли най-много туитнати връзки за определена дата?

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

Вземете туитовете за връзка?

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

Получавате ли десетте най-нови туита?

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. Mongoose не създава индекси

  2. MongoDB грешка при mongos:твърде много позиционни опции

  3. Извличане на данни от mongodb чрез C# драйвер

  4. Как да получите данни от mongodb между включването на два дни в mongodb с помощта на mongoose

  5. Попълване въз основа на условие в mongoose, mongoDB