J'essaie de configurer mongodb pour tester sa vitesse et je rencontre un problème avec la duplication _id. Je ne suis pas en train de régler le problème, je laisse le mongodb faire comme je m'en fous. J'ai le code php suivant:MongoDB _id Génération automatique de champ?
<?php
$mongo = new Mongo();
$db = $mongo->selectDB("scrap_fighters");
$collection = $db->selectCollection('scores');
$data = array
(
'user_id' => 1,
'name' => 'John Doe',
'score' => 120
);
$start = microtime(true);
for($x=0; $x < 1000; $x++)
{
$data['unqiue'] = microtime();
$result = $collection->insert($data, array('safe' => true));
}
?>
Que mongodb utilise-t-il pour générer ses identifiants "uniques"? J'ai même essayé de remplacer unique:
$data['unqiue'] = rand(1, 1000000);
Pour être 100% sûr qu'il travaillait mais il reste a échoué après la première écriture. est-ce que je ne peux pas entrer des enregistrements avec les mêmes données sans génération spécifique un identifiant unique moi-même?
Le champ unique est _id et comme mon code le montre, je ne mets pas le _id automatiquement, ce qui explique pourquoi il est bizarre que le _id soit généré automatiquement avec des valeurs _id conflictuelles. C'est aussi une toute nouvelle collection (qui n'existe pas avant l'exécution du script), il n'y a donc pas d'autres index sur cette collection. – ryanzec
drop collection, faites un var_dump ($ data) après l'insertion et vérifiez _id (s) généré. –
REPONSE: hahaha, je n'ai pas réalisé que l'appel d'insertion a ajouté le _id au tableau. J'ai ajouté unset ($ data ['_ id']) à la fin et ça a bien fonctionné, merci. – ryanzec