code: def _construct_cmdlines(self):
          
          if self.args['sharded']:
              # construct startup string for sharded environments
              self._construct_sharded()
  
          elif self.args['single']:
              # construct startup string for single node environment
              self._construct_single(self.dir, self.args['port'])
  
          elif self.args['replicaset']:
              # construct startup strings for a non-sharded replica set
              self._construct_replset(self.dir, self.args['port'],
                                      self.args['name'],
                                      list(range(self.args['nodes'])),
                                      self.args['arbiter'])
  
          # discover current setup
          self.discover()
docs: Top-level _construct_* method.
  
          From here, it will branch out to the different cases:
          _construct_sharded, _construct_replicaset, _construct_single. These can
          themselves call each other (for example sharded needs to create the
          shards with either replicaset or single node). At the lowest level, the
          construct_mongod, _mongos, _config will create the actual command line
          strings and store them in self.startup_info.