Infelizmente, não da maneira que você fez com os drivers atuais do pymongo. Como você descobriu, se você receber erros em seu
insert_many() ele lançará uma exceção e o detalhe da exceção não contém detalhes do inserted_id s. Ele contém detalhes das chaves que falharam (em
e.details['writeErrors'][]['keyValue'] ) para que você possa tentar trabalhar de trás para frente a partir da sua lista de produtos original. Sua outra solução é usar
insert_one() em um loop com um try ... exceto e verifique cada inserção. Eu sei que isso é menos eficiente, mas é uma solução alternativa ...