español - insertone mongodb php
Mongodb php obtener id de documento nuevo? (4)
Creando un documento:
$db->collection->insert($content);
// $newDocID = ???
Estoy tratando de obtener la identificación del documento nuevo. ¿Cómo? Gracias.
De acuerdo con los documentos, la matriz que pase a insert
se modificará con un campo _id
:
$db->collection->insert($content);
$newDocID = $content[''_id''];
Esto funciona para mí:
$insertResult = $collection->insertOne($object);
$id = $insertResult->getInsertedId();
También puede obtener _id antes de insertar. Simplemente agregue el campo _id para documentar con el nuevo MongoId, es decir.
$content[''_id''] = new MongoId();
$db->collection->insert($content);
También hay buenos beneficios de esto:
- No necesita la bandera fsync como la publicó en comentarios de ZagNut en respuesta anterior. Por lo tanto, no necesita esperar la respuesta de DB.
- No necesita insertar nada en DB para obtener su ID. De modo que puede preparar algunos objetos relacionados y luego insertarlos o no insertarlos , algo así como transacciones que mongo no admite (¿todavía?).
- De hecho, puede generar id. En su aplicación, no en db, para que pueda hacer lo que quiera antes o después de la inserción.
$newDocument = $db->collection->findAndModify ( $row, $row, null, array(''new''=>true,''upsert'' => true));
$strId = $newDocument[''_id'']->{''$id''};