'Update a single document matching the filter.
>>> for doc in db.test.find():
...     print(doc)
{u\'x\': 1, u\'_id\': 0}
{u\'x\': 1, u\'_id\': 1}
{u\'x\': 1, u\'_id\': 2}
>>> result = db.test.update_one({\'x\': 1}, {\'$inc\': {\'x\': 3}})
>>> result.matched_count
1
>>> result.modified_count
1
>>> for doc in db.test.find():
...     print(doc)
{u\'x\': 4, u\'_id\': 0}
{u\'x\': 1, u\'_id\': 1}
{u\'x\': 1, u\'_id\': 2}
:Parameters:
- `filter`: A query that matches the document to update.
- `update`: The modifications to apply.
- `upsert` (optional): If ``True``, perform an insert if no documents
match the filter.
- `bypass_document_validation`: (optional) If ``True``, allows the
write to opt-out of document level validation. Default is
``False``.
- `collation` (optional): An instance of
:class:`~pymongo.collation.Collation`. This option is only supported
on MongoDB 3.4 and above.
:Returns:
- An instance of :class:`~pymongo.results.UpdateResult`.
.. note:: `bypass_document_validation` requires server version
**>= 3.2**
.. versionchanged:: 3.4
Added the `collation` option.
.. versionchanged:: 3.2
Added bypass_document_validation support
.. versionadded:: 3.0'

def update_one(self, filter, update, upsert=False, bypass_document_validation=False, collation=None):

    common.validate_is_mapping('filter', filter)
    common.validate_ok_for_update(update)
    with self._socket_for_writes() as sock_info:
        result = self._update(sock_info, filter, update, upsert, check_keys=False, bypass_doc_val=bypass_document_validation, collation=collation)
    return UpdateResult(result, self.write_concern.acknowledged)
