163 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| data:
 | |
|     - {_id: 1, x: 11}
 | |
|     - {_id: 2, x: 22}
 | |
|     - {_id: 3, x: 33}
 | |
| 
 | |
| tests:
 | |
|     -
 | |
|         description: "FindOneAndUpdate when many documents match returning the document before modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: 
 | |
|                     _id: {$gt: 1}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 sort: {x: 1}
 | |
| 
 | |
|         outcome:
 | |
|             result: {x: 22}
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 23}
 | |
|                     - {_id: 3, x: 33}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when many documents match returning the document after modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: 
 | |
|                     _id: {$gt: 1}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 returnDocument: After
 | |
|                 sort: {x: 1}
 | |
| 
 | |
|         outcome:
 | |
|             result: {x: 23}
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 23}
 | |
|                     - {_id: 3, x: 33}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when one document matches returning the document before modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: {_id: 2}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 sort: {x: 1}
 | |
| 
 | |
|         outcome:
 | |
|             result: {x: 22}
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 23}
 | |
|                     - {_id: 3, x: 33}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when one document matches returning the document after modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: {_id: 2}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 returnDocument: After
 | |
|                 sort: {x: 1}
 | |
| 
 | |
|         outcome:
 | |
|             result: {x: 23}
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 23}
 | |
|                     - {_id: 3, x: 33}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when no documents match returning the document before modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: {_id: 4}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 sort: {x: 1}
 | |
| 
 | |
|         outcome:
 | |
|             result: null
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 22}
 | |
|                     - {_id: 3, x: 33}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when no documents match with upsert returning the document before modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: {_id: 4}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 # Omit the sort option as it has no effect when no documents
 | |
|                 # match and would only cause an inconsistent return value on
 | |
|                 # pre-3.0 servers when combined with returnDocument "before"
 | |
|                 # (see: SERVER-17650).
 | |
|                 upsert: true
 | |
| 
 | |
|         outcome:
 | |
|             result: null
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 22}
 | |
|                     - {_id: 3, x: 33}
 | |
|                     - {_id: 4, x: 1}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when no documents match returning the document after modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: {_id: 4}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 returnDocument: After
 | |
|                 sort: {x: 1}
 | |
| 
 | |
|         outcome:
 | |
|             result: null
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 22}
 | |
|                     - {_id: 3, x: 33}
 | |
|     -
 | |
|         description: "FindOneAndUpdate when no documents match with upsert returning the document after modification"
 | |
|         operation:
 | |
|             name: findOneAndUpdate
 | |
|             arguments:
 | |
|                 filter: {_id: 4}
 | |
|                 update: 
 | |
|                     $inc: {x: 1}
 | |
|                 projection: {x: 1, _id: 0}
 | |
|                 returnDocument: After
 | |
|                 sort: {x: 1}
 | |
|                 upsert: true
 | |
| 
 | |
|         outcome:
 | |
|             result: {x: 1}
 | |
|             collection:
 | |
|                 data:
 | |
|                     - {_id: 1, x: 11}
 | |
|                     - {_id: 2, x: 22}
 | |
|                     - {_id: 3, x: 33}
 | |
|                     - {_id: 4, x: 1} |