code: def get_message(self, set_slave_ok, is_mongos, use_cmd=False):
          
          if set_slave_ok:
              # Set the slaveOk bit.
              flags = self.flags | 4
          else:
              flags = self.flags
  
          ns = _UJOIN % (self.db, self.coll)
          spec = self.spec
  
          if use_cmd:
              ns = _UJOIN % (self.db, "$cmd")
              spec = self.as_command()[0]
              ntoreturn = -1  # All DB commands return 1 document
          else:
              # OP_QUERY treats ntoreturn of -1 and 1 the same, return
              # one document and close the cursor. We have to use 2 for
              # batch size if 1 is specified.
              ntoreturn = self.batch_size == 1 and 2 or self.batch_size
              if self.limit:
                  if ntoreturn:
                      ntoreturn = min(self.limit, ntoreturn)
                  else:
                      ntoreturn = self.limit
  
          if is_mongos:
              spec = _maybe_add_read_preference(spec,
                                                self.read_preference)
  
          return query(flags, ns, self.ntoskip, ntoreturn,
                       spec, self.fields, self.codec_options)
docs: Get a query message, possibly setting the slaveOk bit.