code: def _insert(self, docs, ordered=True, check_keys=True,
                  manipulate=False, write_concern=None, op_id=None,
                  bypass_doc_val=False, session=None):
          
          if isinstance(docs, abc.Mapping):
              return self._insert_one(
                  docs, ordered, check_keys, manipulate, write_concern, op_id,
                  bypass_doc_val, session)
  
          ids = []
  
          if manipulate:
              def gen():
                  """Generator that applies SON manipulators to each document
                  and adds _id if necessary.
                  """
                  _db = self.__database
                  for doc in docs:
                      # Apply user-configured SON manipulators. This order of
                      # operations is required for backwards compatibility,
                      # see PYTHON-709.
                      doc = _db._apply_incoming_manipulators(doc, self)
                      if not (isinstance(doc, RawBSONDocument) or '_id' in doc):
                          doc['_id'] = ObjectId()
  
                      doc = _db._apply_incoming_copying_manipulators(doc, self)
                      ids.append(doc['_id'])
                      yield doc
          else:
              def gen():
                  """Generator that only tracks existing _ids."""
                  for doc in docs:
                      # Don't inflate RawBSONDocument by touching fields.
                      if not isinstance(doc, RawBSONDocument):
                          ids.append(doc.get('_id'))
                      yield doc
  
          write_concern = write_concern or self._write_concern_for(session)
          blk = _Bulk(self, ordered, bypass_doc_val)
          blk.ops = [(message._INSERT, doc) for doc in gen()]
          try:
              blk.execute(write_concern, session=session)
          except BulkWriteError as bwe:
              _raise_last_error(bwe.details)
          return ids
docs: Internal insert helper.