(self, dbname, spec, slave_ok=False,
                read_preference=ReadPreference.PRIMARY,
                codec_options=DEFAULT_CODEC_OPTIONS, check=True,
                allowable_errors=None, check_keys=False,
                read_concern=DEFAULT_READ_CONCERN,
                write_concern=None,
                parse_write_concern_error=False,
                collation=None)
Execute a command or raise ConnectionFailure or OperationFailure.

        :Parameters:
          - `dbname`: name of the database on which to run the command
          - `spec`: a command document as a dict, SON, or mapping object
          - `slave_ok`: whether to set the SlaveOkay wire protocol bit
          - `read_preference`: a read preference
          - `codec_options`: a CodecOptions instance
          - `check`: raise OperationFailure if there are errors
          - `allowable_errors`: errors to ignore if `check` is True
          - `check_keys`: if True, check `spec` for invalid keys
          - `read_concern`: The read concern for this command.
          - `write_concern`: The write concern for this command.
          - `parse_write_concern_error`: Whether to parse the
            ``writeConcernError`` field in the command response.
          - `collation`: The collation for this command.
Execute a command or raise ConnectionFailure or OperationFailure.
Execute a command or raise ConnectionFailure or OperationFailure .
def command(self, dbname, spec, slave_ok=False,
                read_preference=ReadPreference.PRIMARY,
                codec_options=DEFAULT_CODEC_OPTIONS, check=True,
                allowable_errors=None, check_keys=False,
                read_concern=DEFAULT_READ_CONCERN,
                write_concern=None,
                parse_write_concern_error=False,
                collation=None):
        """Execute a command or raise ConnectionFailure or OperationFailure.

        :Parameters:
          - `dbname`: name of the database on which to run the command
          - `spec`: a command document as a dict, SON, or mapping object
          - `slave_ok`: whether to set the SlaveOkay wire protocol bit
          - `read_preference`: a read preference
          - `codec_options`: a CodecOptions instance
          - `check`: raise OperationFailure if there are errors
          - `allowable_errors`: errors to ignore if `check` is True
          - `check_keys`: if True, check `spec` for invalid keys
          - `read_concern`: The read concern for this command.
          - `write_concern`: The write concern for this command.
          - `parse_write_concern_error`: Whether to parse the
            ``writeConcernError`` field in the command response.
          - `collation`: The collation for this command.
        """
        if self.max_wire_version < 4 and not read_concern.ok_for_legacy:
            raise ConfigurationError(
                'read concern level of %s is not valid '
                'with a max wire version of %d.'
                % (read_concern.level, self.max_wire_version))
        if not (write_concern is None or write_concern.acknowledged or
                collation is None):
            raise ConfigurationError(
                'Collation is unsupported for unacknowledged writes.')
        if self.max_wire_version >= 5 and write_concern:
            spec['writeConcern'] = write_concern.document
        elif self.max_wire_version < 5 and collation is not None:
            raise ConfigurationError(
                'Must be connected to MongoDB 3.4+ to use a collation.')
        try:
            return command(self.sock, dbname, spec, slave_ok,
                           self.is_mongos, read_preference, codec_options,
                           check, allowable_errors, self.address,
                           check_keys, self.listeners, self.max_bson_size,
                           read_concern,
                           parse_write_concern_error=parse_write_concern_error,
                           collation=collation)
        except OperationFailure:
            raise
        # Catch socket.error, KeyboardInterrupt, etc. and close ourselves.
        except BaseException as error:
            self._raise_connection_failure(error)
def command ( self , dbname , spec , slave_ok = False , read_preference = ReadPreference . PRIMARY , codec_options = DEFAULT_CODEC_OPTIONS , check = True , allowable_errors = None , check_keys = False , read_concern = DEFAULT_READ_CONCERN , write_concern = None , parse_write_concern_error = False , collation = None ) : if self . max_wire_version < 4 and not read_concern . ok_for_legacy : raise ConfigurationError ( 'read concern level of %s is not valid ' 'with a max wire version of %d.' % ( read_concern . level , self . max_wire_version ) ) if not ( write_concern is None or write_concern . acknowledged or collation is None ) : raise ConfigurationError ( 'Collation is unsupported for unacknowledged writes.' ) if self . max_wire_version >= 5 and write_concern : spec [ 'writeConcern' ] = write_concern . document elif self . max_wire_version < 5 and collation is not None : raise ConfigurationError ( 'Must be connected to MongoDB 3.4+ to use a collation.' ) try : return command ( self . sock , dbname , spec , slave_ok , self . is_mongos , read_preference , codec_options , check , allowable_errors , self . address , check_keys , self . listeners , self . max_bson_size , read_concern , parse_write_concern_error = parse_write_concern_error , collation = collation ) except OperationFailure : raise # Catch socket.error, KeyboardInterrupt, etc. and close ourselves. except BaseException as error : self . _raise_connection_failure ( error )