MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Champ incrémentiel à la collection existante

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...