MongoCollection::batchInsertInerta múltiples documentos en esta colección
&reftitle.description;
publicmixedMongoCollection::batchInsertarrayaarrayoptionsarray()
&reftitle.parameters;
a
Un array de arrays u objetos. Si se utilizan objetos, estos no pueden tener
propiedades protegidas o privadas.
Si los documentos a insertar no poseen una clave o propiedad _id,
se creará una nueva instancia de MongoId
y se le asignará. Véase MongoCollection::insert para
información adicional sobre este comportamiento.
options
Un array de opciones para las operaciones de inserción de lotes. Las opciones
disponibles actualmente son:
"continueOnError"
Booleano, por omisión es &false;. Si se establece, la base de datos no parará de
procesar un volumen de inserciones si una falla (p.ej. debido a IDs duplicados).
Esto hace que el volumen de inserciones se comporte de manera similar a una insercioón
única, excepto que con la llamada a MongoDB::lastError
se obtendrá un error establecido si cualquier inserción falla, no sólo la primera.
Si ocurren varios errores, sólo se informará de más reciente, mediante
MongoDB::lastError.
Observe que continueOnError afecta únicamentea los errores
del lado del servidor. Si se intenta insertar un documento que tiene
errores (por ejemplo que contiene una clave con un nombre vacío), el
documento no será transferido a la base de datos, ya que el controlador
detecta este error y no continúa.
continueOnError no tiene efecto sobre errores detectados
por el controlador en los documentos.
&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;
Si el parámetro w está establecido para aceptar la escritura,
devuelve un array asociativo con el estado de las inserciones ("ok") y cualquier
error que pudiera ocurrir ("err"). De lo contrario, devuelve &true; si la
inserción por lotes fue enviada con éxito, si no, &false;.
&reftitle.errors;
Lanza una MongoException si cualquier 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.4Se añadió la opción "wtimeout".1.3.0Se añadió la opción "w".1.2.7Se añadió la opción "continueOnError".1.0.9
Se añadió la capacidad de pasar números enteros a la opción "safe",
que anteriormente sólo aceptaba booleanos.
Se añadió la opción "fsync".
1.0.5Se añadió el parámetro options.
&reftitle.examples;
Ejemplo de MongoCollection::batchInsert
Las inserciones por lotes son una forma rápida de añadir muchos elementos a la base de datos de una sola vez
'usuario'.$i, 'i' => $i);
}
$mongo = new MongoClient();
$collection = $mongo->my_db->usuarios;
$collection->drop();
$collection->batchInsert($usuarios);
foreach ($usuarios as $usuario) {
echo $usuario['_id']."\n"; // completado con instanceof MongoId
}
$usuarios = $collection->find()->sort(array('i' => 1));
foreach ($usuarios as $usuario) {
var_dump($usuario['nombreUsuario']);
}
?>
]]>
&example.outputs.similar;
Ejemplo de MongoCollection::batchInsert
ignorando errores
demo;
$doc1 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010001'),
'id' => 1,
'desc' => "ONE",
);
$doc2 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010002'),
'id' => 2,
'desc' => "TWO",
);
$doc3 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010002'), // el mismo _id que el anteior
'id' => 3,
'desc' => "THREE",
);
$doc4 = array(
'_id' => new MongoId('4cb4ab6d7addf98506010004'),
'id' => 4,
'desc' => "FOUR",
);
$c = $db->selectCollection('c');
$c->batchInsert(
array($doc1, $doc2, $doc3, $doc4),
array('continueOnError' => true)
);
$docs = $c->find();
foreach ($docs as $doc) {
var_dump($doc['desc']);
}
?>
]]>
&example.outputs.similar;
&reftitle.seealso;
MongoCollection::insertMongoCollection::updateMongoCollection::findMongoCollection::removeDocumentación de MongoDB sobre insert.