(self)
return self.__spec
Get the spec to use for a query.
Get the spec to use for a query.
Get the spec to use for a query .
def __query_spec(self):
        """Get the spec to use for a query.
        """
        operators = self.__modifiers.copy()
        if self.__ordering:
            operators["$orderby"] = self.__ordering
        if self.__explain:
            operators["$explain"] = True
        if self.__hint:
            operators["$hint"] = self.__hint
        if self.__comment:
            operators["$comment"] = self.__comment
        if self.__max_scan:
            operators["$maxScan"] = self.__max_scan
        if self.__max_time_ms is not None:
            operators["$maxTimeMS"] = self.__max_time_ms
        if self.__max:
            operators["$max"] = self.__max
        if self.__min:
            operators["$min"] = self.__min
        if self.__return_key:
            operators["$returnKey"] = self.__return_key
        if self.__show_record_id:
            # This is upgraded to showRecordId for MongoDB 3.2+ "find" command.
            operators["$showDiskLoc"] = self.__show_record_id
        if self.__snapshot:
            operators["$snapshot"] = self.__snapshot

        if operators:
            # Make a shallow copy so we can cleanly rewind or clone.
            spec = self.__spec.copy()

            # White-listed commands must be wrapped in $query.
            if "$query" not in spec:
                # $query has to come first
                spec = SON([("$query", spec)])

            if not isinstance(spec, SON):
                # Ensure the spec is SON. As order is important this will
                # ensure its set before merging in any extra operators.
                spec = SON(spec)

            spec.update(operators)
            return spec
        # Have to wrap with $query if "query" is the first key.
        # We can't just use $query anytime "query" is a key as
        # that breaks commands like count and find_and_modify.
        # Checking spec.keys()[0] covers the case that the spec
        # was passed as an instance of SON or OrderedDict.
        elif ("query" in self.__spec and
              (len(self.__spec) == 1 or
               next(iter(self.__spec)) == "query")):
            return SON({"$query": self.__spec})

        return self.__spec
def __query_spec ( self ) : operators = self . __modifiers . copy ( ) if self . __ordering : operators [ "$orderby" ] = self . __ordering if self . __explain : operators [ "$explain" ] = True if self . __hint : operators [ "$hint" ] = self . __hint if self . __comment : operators [ "$comment" ] = self . __comment if self . __max_scan : operators [ "$maxScan" ] = self . __max_scan if self . __max_time_ms is not None : operators [ "$maxTimeMS" ] = self . __max_time_ms if self . __max : operators [ "$max" ] = self . __max if self . __min : operators [ "$min" ] = self . __min if self . __return_key : operators [ "$returnKey" ] = self . __return_key if self . __show_record_id : # This is upgraded to showRecordId for MongoDB 3.2+ "find" command. operators [ "$showDiskLoc" ] = self . __show_record_id if self . __snapshot : operators [ "$snapshot" ] = self . __snapshot if operators : # Make a shallow copy so we can cleanly rewind or clone. spec = self . __spec . copy ( ) # White-listed commands must be wrapped in $query. if "$query" not in spec : # $query has to come first spec = SON ( [ ( "$query" , spec ) ] ) if not isinstance ( spec , SON ) : # Ensure the spec is SON. As order is important this will # ensure its set before merging in any extra operators. spec = SON ( spec ) spec . update ( operators ) return spec # Have to wrap with $query if "query" is the first key. # We can't just use $query anytime "query" is a key as # that breaks commands like count and find_and_modify. # Checking spec.keys()[0] covers the case that the spec # was passed as an instance of SON or OrderedDict. elif ( "query" in self . __spec and ( len ( self . __spec ) == 1 or next ( iter ( self . __spec ) ) == "query" ) ) : return SON ( { "$query" : self . __spec } ) return self . __spec