Eh bien, en utilisant le lien que vous avez mentionné , je préfère utiliser le démarche de collecte des compteurs .
L'approche des collectes de compteurs présente certains inconvénients, notamment :
- Il génère toujours plusieurs requêtes (deux) :une pour obtenir le numéro de séquence, une autre pour faire l'insertion en utilisant l'identifiant que vous avez obtenu via la séquence,
- Si vous utilisez les fonctionnalités de partitionnement de mongodb, un document responsable du stockage d'un état de compteur peut être beaucoup utilisé, et à chaque fois il atteindra le même serveur.
Cependant, il devrait convenir à la plupart des utilisations.
L'approche que vous avez mentionnée ("l'optimiste boucle" ) ne devrait pas casser l'OMI, et je ne devine pas pourquoi vous avez un problème avec cela. Cependant je ne le recommanderais pas. Que se passe-t-il si vous exécutez le code sur plusieurs clients mongo, si l'un a beaucoup de latence et que d'autres continuent de prendre des identifiants ? Je n'aimerais pas rencontrer ce genre de problème... De plus, il y a au moins deux requêtes par opération réussie, mais pas de maximum de tentatives avant un succès...