MongoCollection::insert Inserta un documento en la colección &reftitle.description; public bool|arrayMongoCollection::insert array|objectdocument arrayoptionsarray() Todas los string que se envíen a la base de datos deben estar en UTF-8. Si un string no estuviera en UTF-8, se lanzará una MongoException. Para insertar (o consultar) un texto que no esté en UTF-8, utilice MongoBinData. &reftitle.parameters; document Un array u objeto. Si se utiliza un objeto, este no puede tener propiedades protegidas o privadas. Si el parámetro no posee una clave o propiedad _id, se creará una nueva instancia de MongoId y se le asignará. Este comportamiento especial no implica que el parámetro sea pasado por referencia. options Un array de opciones para la operación de inserción. Las opciones disponibles actualmente son: &mongo.writes.parameters.fsync; &mongo.writes.parameters.journal; &mongo.writes.parameters.sockettimeoutms; &mongo.writes.parameters.writeconcern; &mongo.writes.parameters.writeconcerntimeoutms; Las siguientes opciones están obsoletas y no deberían usarse más: &mongo.writes.parameters.safe; &mongo.writes.parameters.timeout; &mongo.writes.parameters.writeconcerntimeout; &reftitle.returnvalues; Devuelve un array que contiene el estado de la inserción si la opción "w" está establecida. De lo contrario, devuelve &true; si el array insertado no está vacío (se lanzará una MongoException si el array insertado está vacío). Si devuelve un array, las siguientes claves podrían estar presentes: ok Debería ser casi siempre 1 (a menos que last_error falle por sí mismo). err Si este campo es diferente de null, un error ocurrido en la operación anterior. Si este campo está establecido, será un string describiendo el error que ocurrió. code Si ocurrión un error de base de datos, el código de error relevante será devuelto al cliente. errmsg Este campo está establecido si algo va mal con un comando de base de datos. Está asociado con ok igual a 0. Por ejemplo, si se establece w y se agota el tiempo, errmsg será establecido a "timed out waiting for slaves" y ok será 0. Si este campo es establecido, será un string que describe el error ocurrido. n Si la última operación fue de inserción, una upsert, o una eliminación, será devuelto el número de objetos afectados. Para operaciones de inserción, este valor siempre es 0. wtimeout Si la opción anterior agota el tiempo, esperará a una réplica. waited Cuánto esperará la operación antes de agotarse el tiempo. wtime Si w fue establecido y la operación tiene éxito, cuánto toma la réplica a los servidores de w. upserted Si ocurre una upsert, este campo contendrá el nuevo campo _id del registro. Para upserts, estará presente este campo o updatedExisting (a menos que ocurra un error). updatedExisting Si una upsert actualiza un elemento existente, este campo será "true". Para upsert, estará presente este campo o 'upserted' (a menos que ocurra un error). &reftitle.errors; Lanza una MongoException si el documento insertado está vacío o si contiene claves de longitud cero. Intentar insertar un objeto con propiedades protegidas o privadas causará un error de clave de longitud cero. &mongo.errors.exceptions.writeconcern; &reftitle.changelog; &Version; &Description; 1.5.0 Se añadió la opción "wTimeoutMS", la cual remplaza a "wtimeout". Emite un error de nivel E_DEPRECATED cuando se usa "wtimeout". Se añadió la opción "socketTimeoutMS", la cual remplza a "timeout". Emite un error de nivel E_DEPRECATED cuando se usa "timeout". Emite un error de nivel E_DEPRECATED al usar "safe". 1.3.4 Se añadió la opción "wtimeout". 1.3.0 Se añadió la opción "w". El parámetro options ya no acepta un booleano para indicar una escritura aceptada. En su lugar, ahora esto tiene que realizarse con array('w' => 1) (El comportamiento predeterminado de MongoClient). 1.2.0 Se añadió el parámetro "timeout". 1.0.11 Se desconecta en errores "not master" si "safe" está establecido. 1.0.9 Añadida la capacidad de pasar enteros a la opción "safe", la cual anteriormente únicamente aceptaba booleanos. Añadida la opción "fsync". Cambiado el tipo devuelto por un array que contiene información si se utiliza la opción "safe". De otro modo, se devuelve un booleano como antes. 1.0.2 Cambiado el segundo parámetro a un array de opciones. Antes de la versión 1.0.2, el segundo parámetro era un booleano indicando la opción "safe". 1.0.1 Lanza una MongoCursorException si la opción "safe" está establecida y la inserción falla. &reftitle.examples; Ejemplo de <function>MongoCollection::insert</function> con <literal>_id</literal> Un campo _id será añadido al documento insertado si no estuviera ya presente. Dependiendo de cómo el parámetro sea pasado, estará disponible o no un _id generado para llamar al código. selectCollection('test', 'phpmanual'); // Si se usa un array literal, no hay forma de acceder al _id generado $colección->insert(array('x' => 1)); // El _id está disponible en un array pasado por valor $a = array('x' => 2); $colección->insert($a); var_dump($a); // El _id no está disponible en un array pasado por referencia $b = array('x' => 3); $ref = &$b; $colección->insert($ref); var_dump($ref); // El _id está disponible si una función envolvente no desencadena una copia durante la escritura function insert_no_cow($colección, $documento) { $colección->insert($documento); } $c = array('x' => 4); insert_no_cow($colección, $c); var_dump($c); // El _id no está disponible si una función envolvente desencadena una copia durante la escritura function insert_cow($colección, $documento) { $documento['y'] = 1; $colección->insert($documento); } $d = array('x' => 5); insert_cow($colección, $d); var_dump($d); ?> ]]> &example.outputs.similar; int(2) ["_id"]=> object(MongoId)#4 (0) { } } array(1) { ["x"]=> int(3) } array(2) { ["x"]=> int(4) ["_id"]=> object(MongoId)#5 (0) { } } array(1) { ["x"]=> int(5) } ]]> Ejemplo de escritura aceptada con <function>MongoCollection::insert</function> Este ejemplo muestra cómo al insertar dos elementos con el mismo _id, se provoca que se lance una excepción MongoCursorException, ya que w está habilitado. "Joe", "edad" => 20); $colección->insert($persona); // ahora $persona tiene un campo _id, así que si intentamos guardarlo // de nuevo, obtendremos una excepción try { $collection->insert($persona, array("w" => 1)); } catch(MongoCursorException $e) { echo "No se puede guardar dos veces la misma persona!\n"; } ?> ]]> &reftitle.seealso; MongoCollection::batchInsert MongoCollection::update MongoCollection::find MongoCollection::remove Documentación de MongoDB sobre insert.