1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-26 00:28:03 +02:00
Files
archived-doc-es/reference/mongo/mongocollection/findandmodify.xml
T
Pedro Antonio Gil Rodríguez 76265f6896 Actualizacion a la ultima version
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@330880 c90b9560-bf6c-de11-be94-00142212c4b1
2013-07-10 18:04:44 +00:00

291 lines
7.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e61e6e8a7d58f2eaad20e36786d543e4385633b1 Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="mongocollection.findandmodify" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>MongoCollection::findAndModify</refname>
<refpurpose>Actualizar un documento y devolverlo</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>array</type><methodname>MongoCollection::findAndModify</methodname>
<methodparam><type>array</type><parameter>query</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>update</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>fields</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>options</parameter></methodparam>
</methodsynopsis>
<para>
El comando findAndModify modifica atómicamente y devuelve un único documento.
Por omisión, el documento devuelto no incluye las modificaciones realizadas en
la actualización. Para devolver el documento con las modificaciones hechas en la
actualización, use la opción <varname>new</varname>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>query</parameter></term>
<listitem>
<para>
Los criterios de consulta con los que buscar.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>update</parameter></term>
<listitem>
<para>
Los criterios de actualización.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>fields</parameter></term>
<listitem>
<para>
Devolver opcionalmente estos campos solamente.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>options</parameter></term>
<listitem>
<para>
Un array de opciones a aplicar, tal como eliminar el documento coincidente de la
BD y devolverlo.
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Opción</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry><varname>sort</varname> <type>array</type></entry>
<entry>
Determina qué documento modificará la operación si la
consulta selecciona varios. findAndModify modificará el
primer documento en el orden especificado por este argumento.
</entry>
</row>
<row>
<entry><varname>remove</varname> <type>boolean</type></entry>
<entry>
Opcional si el campo <varname>update</varname> existe. Cuando es &true;, elimina el documento
seleccionado. El valor predeterminado es &false;.
</entry>
</row>
<row>
<entry><varname>update</varname> <type>array</type></entry>
<entry>
Opcional si existe el campo <varname>remove</varname>.
Realiza una actualización del documento seleccionado.
</entry>
</row>
<row>
<entry><varname>new</varname> <type>boolean</type></entry>
<entry>
Opcional. Si es &true;, devulve el documento modificado en lugar del
original. El método findAndModify ignora la opción <varname>new</varname> en
operaciones de eliminación. El valor predeterminado es &false;.
</entry>
</row>
<row>
<entry><varname>upsert</varname> <type>boolean</type></entry>
<entry>
Opcional. Usada junto con el campo <varname>update</varname>. Se es &true;, el
comando findAndModify crea un nuevo documento si la consulta no devuelve
ningujo. El valor predeterminado es false. En MongoDB 2.2, el
comando findAndModify devuelve &null; cuando upsert es &true;.
</entry>
</row>
<row>
<entry><varname></varname></entry>
<entry>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve el documento original, o el modificado si
<varname>new</varname> está establecido.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Lanza una <classname>MongoResultException</classname> en case de error.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="mongocollection.findandmodify.example.basic">
<title>Ejemplo de <methodname>MongoCollection::findAndModify</methodname></title>
<programlisting role="php">
<![CDATA[
<?php
$m = new Mongo;
$col = $m->selectDB("test")->jobs;
$col->insert(array(
"name" => "Next promo",
"inprogress" => false,
"priority" => 0,
"tasks" => array( "select product", "add inventory", "do placement"),
) );
$col->insert(array(
"name" => "Biz report",
"inprogress" => false,
"priority" => 1,
"tasks" => array( "run sales report", "email report" )
) );
$col->insert(array(
"name" => "Biz report",
"inprogress" => false,
"priority" => 2,
"tasks" => array( "run marketing report", "email report" )
),
array("w" => 1)
);
$retval = $col->findAndModify(
array("inprogress" => false, "name" => "Biz report"),
array('$set' => array('inprogress' => true, "started" => new MongoDate())),
null,
array(
"sort" => array("priority" => -1),
"new" => true,
)
);
var_dump($retval);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
array(6) {
["_id"]=>
object(MongoId)#7 (1) {
["$id"]=>
string(24) "5091b5b244415e8cc3000002"
}
["inprogress"]=>
bool(true)
["name"]=>
string(10) "Biz report"
["priority"]=>
int(2)
["started"]=>
object(MongoDate)#8 (2) {
["sec"]=>
int(1351726514)
["usec"]=>
int(925000)
}
["tasks"]=>
array(2) {
[0]=>
string(20) "run marketing report"
[1]=>
string(12) "email report"
}
}
]]>
</screen>
</example>
<example xml:id="mongocollection.findandmodify.example.error">
<title>Manejo de errores de <methodname>MongoCollection::findAndModify</methodname></title>
<programlisting role="php">
<![CDATA[
<?php
$m = new Mongo;
$col = $m->selectDB("test")->jobs;
try {
$retval = $col->findAndModify(
array("inprogress" => false, "name" => "Next promo"),
array('$pop' => array("tasks" => -1)),
array("tasks" => array('$pop' => array("stuff"))),
array("new" => true)
);
} catch(MongoResultException $e) {
echo $e->getCode(), " : ", $e->getMessage(), "\n";
var_dump($e->getDocument());
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
13097 : exception: Unsupported projection option: $pop
array(3) {
["errmsg"]=>
string(46) "exception: Unsupported projection option: $pop"
["code"]=>
int(13097)
["ok"]=>
float(0)
}
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member>La documentación de MongoDB sobre el <link xlink:href="&url.mongodb.docs.command;findAndModify/">comando findAndModify</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
indent-tabs-mode:nil
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
-->