public function __construct($databaseName, $collectionName, $filter, $replacement, array $options = [])
{
if (!is_array($replacement) && !is_object($replacement)) {
throw InvalidArgumentException::invalidType('$replacement', $replacement, 'array or object');
}
if (Functions::isFirstKeyOperator($replacement)) {
throw new InvalidArgumentException('First key in $replacement argument is an update operator');
}
$this->update = new Update($databaseName, $collectionName, $filter, $replacement, ['multi' => false] + $options);
}