title: Update one field or insert many if not exists
body: <p>Upsert functionality is great in update method, but it seems it has one big disadvantage, and I cannot find a reasonable solution to it.</p>
  
  <p>The problem is that I want to update only one field if there are results found matching the query criteria, but none rows found, I want to insert a lot of fields.</p>
  
  <p>For example if <strong>find( {name: John, surname: Connor })</strong> returns result, I want to set only new age for him like <strong>{ age: 33 }</strong>, but if no results found, I want to insert a lot of fields, something like <strong>{ name: John, surname: Connor, age: 32, role: commander, character: cautious, hobby: 'kill terminators' }</strong></p>
  
  <p>Is there a pretty way to achieve this on one query? Or the only solution is straighforward one, meaning find, check how many results found, and based on it insert or update?</p>
  
  <p><strong>EDIT:</strong> I made an addition to explain the need of ability to make this in one step. The solution to make it in two steps (first find, and then insert/update) is good when having one worked to find and update/insert, but this will fail when having like 1000 of workers that will try to do it - in result I may have a lot of John Connors in the database (when first couple of workers will find no results and all of them inserts a new row) unless I make an unique index to Name-Surname pair (somehow). But I am looking for solution not to do so.</p>