title: Fetch deep nested documents with GraphQL
body: <p>What would the best approach to fetch deep nested object with graphql only when asked for.
  I'm talking here <strong><em>performance wise</em></strong></p>
  
  <p>Lets say you have the following mongo/mongoose schema :</p>
  
  <pre><code>User 
    |
    |_ Name
    |
    |_ Friends (RefId into User)
        |
        |_ User
            |
            |_ Friends (RefId into User)
  
        .....
  </code></pre>
  
  <p>suppose each user has many friends who in turn have many other friends,
  how would decide how deeply you need to <code>populate</code> inside a <code>resolve</code> function?</p>
  
  <p>the naive method of "just populating" might be harmful as many of the queries might just select the field <code>name</code> which is on the 0 level, but end up populating 1/2 of your db.</p>
  
  <p>Thanks in advance.</p>