1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-26 08:22:08 +01:00
Files
archived-doc-es/reference/mongo/mongocollection/batchinsert.xml
Pedro Antonio Gil Rodríguez 20dba8cbe6 Actualización a la última versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@333808 c90b9560-bf6c-de11-be94-00142212c4b1
2014-06-17 10:49:07 +00:00

319 lines
9.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4daa8ece2f2d57e8c0be8b343bd072d7f81889c9 Maintainer: seros Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<refentry xml:id="mongocollection.batchinsert" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>MongoCollection::batchInsert</refname>
<refpurpose>Inerta múltiples documentos en esta colección</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>mixed</type><methodname>MongoCollection::batchInsert</methodname>
<methodparam><type>array</type><parameter>a</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>options</parameter><initializer>array()</initializer></methodparam>
</methodsynopsis>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term>
<parameter>a</parameter>
</term>
<listitem>
<para>
Un array de arrays u objetos. Si se utilizan objetos, estos no pueden tener
propiedades protegidas o privadas.
</para>
<note>
<para>
Si los documentos a insertar no poseen una clave o propiedad <literal>_id</literal>,
se creará una nueva instancia de <classname>MongoId</classname>
y se le asignará. Véase <function>MongoCollection::insert</function> para
información adicional sobre este comportamiento.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>options</parameter>
</term>
<listitem>
<para>
Un array de opciones para las operaciones de inserción de lotes. Las opciones
disponibles actualmente son:
<itemizedlist>
<listitem>
<para>
<literal>"continueOnError"</literal>
</para>
<para>
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 <function>MongoDB::lastError</function>
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
<function>MongoDB::lastError</function>.
</para>
<note>
<para>
Observe que <literal>continueOnError</literal> 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.
<literal>continueOnError</literal> no tiene efecto sobre errores detectados
por el controlador en los documentos.
</para>
</note>
</listitem>
&mongo.writes.parameters.fsync;
&mongo.writes.parameters.journal;
&mongo.writes.parameters.sockettimeoutms;
&mongo.writes.parameters.writeconcern;
&mongo.writes.parameters.writeconcerntimeoutms;
</itemizedlist>
</para>
<para>
Las siguientes opciones están obsoletas y no deberían usarse más:
<itemizedlist>
&mongo.writes.parameters.safe;
&mongo.writes.parameters.timeout;
&mongo.writes.parameters.writeconcerntimeout;
</itemizedlist>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Si el parámetro <literal>w</literal> 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;.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Lanza una <classname>MongoException</classname> 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.
</para>
&mongo.errors.exceptions.writeconcern;
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>1.5.0</entry>
<entry>
<para>
Se añadió la opción <literal>"wTimeoutMS"</literal>, la cual remplaza a
<literal>"wtimeout"</literal>. Emite un error de nivel <constant>E_DEPRECATED</constant>
cuando se usa <literal>"wtimeout"</literal>.
</para>
<para>
Se añadió la opción <literal>"socketTimeoutMS"</literal>, la cual remplza a
<literal>"timeout"</literal>. Emite un error de nivel <constant>E_DEPRECATED</constant>
cuando se usa <literal>"timeout"</literal>.
</para>
<para>
Emite un error de nivel <constant>E_DEPRECATED</constant> al
usar <literal>"safe"</literal>.
</para>
</entry>
</row>
<row>
<entry>1.3.4</entry>
<entry>Se añadió la opción <literal>"wtimeout"</literal>.</entry>
</row>
<row>
<entry>1.3.0</entry>
<entry>Se añadió la opción <literal>"w"</literal>.</entry>
</row>
<row>
<entry>1.2.7</entry>
<entry>Se añadió la opción <literal>"continueOnError"</literal>.</entry>
</row>
<row>
<entry>1.0.9</entry>
<entry>
<para>
Se añadió la capacidad de pasar números enteros a la opción <literal>"safe"</literal>,
que anteriormente sólo aceptaba booleanos.
</para>
<para>
Se añadió la opción <literal>"fsync"</literal>.
</para>
</entry>
</row>
<row>
<entry>1.0.5</entry>
<entry>Se añadió el parámetro <parameter>options</parameter>.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Ejemplo de <function>MongoCollection::batchInsert</function></title>
<para>
Las inserciones por lotes son una forma rápida de añadir muchos elementos a la base de datos de una sola vez
</para>
<programlisting role="php">
<![CDATA[
<?php
$usuarios = array();
for ($i = 0; $i<100; $i++) {
$usuarios[] = array('nombreUsuario' => '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']);
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
4bf43ac68ead0e1971000000
4bf43ac68ead0e1971010000
4bf43ac68ead0e1971020000
...
string(5) "usuario1"
string(5) "usuario2"
string(5) "usuario3"
...
]]>
</screen>
</example>
<example>
<title>Ejemplo de <function>MongoCollection::batchInsert</function>
ignorando errores</title>
<programlisting role="php">
<![CDATA[
<?php
$con = new Mongo;
$db = $con->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']);
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
string(3) "ONE"
string(3) "TWO"
string(4) "FOUR"
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>MongoCollection::insert</function></member>
<member><function>MongoCollection::update</function></member>
<member><function>MongoCollection::find</function></member>
<member><function>MongoCollection::remove</function></member>
<member>Documentación de MongoDB sobre <link xlink:href="&url.mongodb.dochub.insert;">insert</link>.</member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->