46 votes

Incrémentation automatique dans MongoDB pour stocker la séquence de l'ID utilisateur unique

Je crée un système d'analyse, l'appel d'API fournirait un identifiant d'utilisateur unique, mais ce n'est pas en séquence et trop clairsemé.

Je dois donner à chaque identifiant d'utilisateur unique un identifiant d'incrémentation automatique pour marquer un point de données d'analyse dans un bitarray/bitset. Ainsi, le premier utilisateur rencontré correspondrait au premier bit du bitarray, le deuxième utilisateur serait le deuxième bit du bitarray, etc.

Existe-t-il donc un moyen solide et rapide de générer des identifiants d'utilisateur uniques incrémentiels dans MongoDB ?

32voto

ruslan Points 5754

Comme la réponse sélectionnée indique que vous pouvez utiliser findAndModify pour générer des ID séquentiels.

Mais je ne suis pas du tout d'accord avec l'opinion selon laquelle vous ne devriez pas faire cela. Tout dépend des besoins de votre entreprise. Avoir un ID de 12 octets peut être très consommateur de ressources et entraîner des problèmes d'évolutivité importants à l'avenir.

J'ai une réponse détaillée ici .

0voto

Darshan Vithani Points 39

Le premier enregistrement doit être ajouté

 "_id" = 1    in your db

$database = "demo";
$collections ="democollaction";
echo getnextid($database,$collections);

function getnextid($database,$collections){

     $m = new MongoClient();
    $db = $m->selectDB($database);
    $cursor = $collection->find()->sort(array("_id" => -1))->limit(1);
    $array = iterator_to_array($cursor);

    foreach($array as $value){



        return $value["_id"] + 1;

    }
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X