title: Suggestion on MongoDB indexing
body: <p>I have the following MongoDB schema 
  Item</p>
  
  <ul>
  <li>id</li>
  <li>title : string</li>
  <li>description : string</li>
  <li>num_views : number</li>
  <li>num_likes : number</li>
  <li>num_unlikes : number</li>
  <li>val_trending : number</li>
  <li>val_rating : number</li>
  <li>timestamp : number</li>
  </ul>
  
  <p><strong>val_trending</strong> is calculated based on the value of <strong>num_views, num_likes, num_dislikes, timestamp</strong> </p>
  
  <p><strong>val_rating</strong> is calculated based on the value of <strong>num_likes, num_dislikes, timestamp</strong></p>
  
  <p>I have to query Items based on <strong>num_views, val_trending</strong> or <strong>val_rating</strong></p>
  
  <p>i.e.</p>
  
  <ul>
  <li>Item.find ().sort ({ val_trending : -1 }).limit (20)</li>
  <li>Item.find ().sort ({ num_views : -1 }).limit (20)</li>
  </ul>
  
  <p><strong>num_views, num_likes and num_unlikes</strong> are updated when a user <strong>view</strong>, <strong>like</strong> or <strong>unlike</strong> an Item accordingly </p>
  
  <p><strong>val_trending</strong> is updated when a user <strong>view</strong>, <strong>like</strong> or <strong>unlike</strong> an Item</p>
  
  <p><strong>val_rating</strong> is updated when a user <strong>like</strong> or <strong>unlike</strong> an Item</p>
  
  <p>That’s a lot of updating and that's what got me worried. I thought of indexing <strong>num_views, val_trending and val_rating</strong> for faster results. But this will also show down updates.</p>
  
  <p>I will be querying Items several times every second and updates will occur more frequently as user might also like or unlike an Item after viewing an Item.</p>
  
  <p>So, my question is: what sort of implementation (indexing) should I do in order to get the best performance? </p>
  
  <p><em>Note: The DB will hold approximately 10K <strong>Items</strong> at start, and it will increase daily.</em></p>