35 votes

Mongodb php obtient l'identifiant du nouveau document?

Création d'un document:

 $db->collection->insert($content);
// $newDocID = ???
 

J'essaie d'obtenir l'ID du nouveau document. Comment? Merci.

62voto

Theo Points 60103

Selon les documents, le tableau que vous passez à insert sera modifié avec un champ _id :

 $db->collection->insert($content);
$newDocID = $content['_id'];
 

34voto

PeterM Points 4469

Vous pouvez également obtenir _id avant de l' insérer. Juste ajouter un champ _id document avec la nouvelle MongoId ie.

$content['_id'] = new MongoId();
$db->collection->insert($content);

Il y a aussi belles prestations de cette:

  1. Vous n'avez pas besoin de fsync drapeau comme posté en commentaire par ZagNut dans la réponse précédente. Si vous n'avez pas besoin d'attendre la réponse de DB.
  2. Vous n'avez pas besoin de réellement insérer quoi que ce soit à la DB pour obtenir l'id. De sorte que vous pouvez préparer des objets et de les insérer ou de ne pas insérer eux - un peu comme les transactions qui mongo ne supporte pas (encore?).
  3. En fait vous pouvez générer de code dans votre application, et non en db, de Sorte que vous pouvez faire ce que vous voulez avant ou après l'insertion.

1voto

BbopLifa Points 21
  $newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true));
 $strId = $newDocument['_id']->{'$id'};
 

http://php.net/manual/en/mongocollection.findandmodify.php

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