title: override mongoengine query mechanism
body: <p>Let's say that I have 2 mongo collections, being handled using <code>mongoengine</code> at server.</p>
  <pre class="lang-py prettyprint-override"><code>class UserA(Document):
  
    first_name = fields.StringField()
    last_name = fields.StringField()
    country = fields.StringField()
  
  class UserB(Document):  # completely independent of UserA at storage layer
    full_name = fields.StringField()
    country = fields.StringField()
  </code></pre>
  <p><code>UserA</code> and <code>UserB</code> are 2 separate collections (stored separately in database) having separate entries and have nothing to do with each other at the storage layer.</p>
  <p><code>UserA</code> can be converted to <code>UserB</code> with this formula  at compute (server) layer.</p>
  <pre class="lang-py prettyprint-override"><code>def convert_to_userb(user_a):
    user_b = UserB()
    user_b.full_name = user_a.first_name + &quot; &quot; + user_b.last_name
    user_b.country = user_a.country
    return user_b
  </code></pre>
  <p>Now, for some reason I want to override the <code>objects()</code> call in mongoengine of <code>UserB</code> to also fetch data from <code>UserA</code>. Something like</p>
  <pre class="lang-py prettyprint-override"><code>@queryset_manager
  def objects(doc_cls, queryset):
    actual_results = &lt;Some form of UserA.objects(query_set)&gt; # result that one would get normally without any override
    additional_results = convert_to_userb(&lt;Some form of UserA.objects(query_set)&gt;)
    return actual_results + additional_results
  </code></pre>
  <p>What's the best way to achieve this? Any particular reason why you would recommend against it, if any?</p>