Malheureusement, pas comme vous l'avez fait avec les pilotes pymongo actuels. Comme vous l'avez constaté, si vous obtenez des erreurs dans votre insert_many() il lèvera une exception et le détail de l'exception ne contient pas les détails de inserted_id s.
Il contient les détails des clés qui ont échoué (dans e.details['writeErrors'][]['keyValue'] ) afin que vous puissiez essayer de revenir en arrière à partir de votre liste de produits d'origine.
Votre autre solution consiste à utiliser insert_one() dans une boucle avec un try... sauf et check chaque insert. Je sais que c'est moins efficace mais c'est une solution de contournement...