/**
* Finds a single document matching the query.
*
* @see FindOne::__construct() for supported options
* @see http://docs.mongodb.org/manual/core/read-operations-introduction/
*
* @param array|object $filter Query by which to filter documents
* @param array $options Additional options
*
* @return array|object|null
*/
public function findOne($filter = [], array $options = [])
{
if (!isset($options['readConcern'])) {
$options['readConcern'] = $this->readConcern;
}
if (!isset($options['readPreference'])) {
$options['readPreference'] = $this->readPreference;
}
if (!isset($options['typeMap'])) {
$options['typeMap'] = $this->typeMap;
}
$operation = new FindOne($this->databaseName, $this->collectionName, $filter, $options);
$server = $this->manager->selectServer($options['readPreference']);
return $operation->execute($server);
}