1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-26 16:32:13 +01:00
Files
archived-doc-es/reference/mongo/mongodb/command.xml
Pedro Antonio Gil Rodríguez 0511fb5c40 Actualización a la última versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@336504 c90b9560-bf6c-de11-be94-00142212c4b1
2015-04-12 16:32:06 +00:00

356 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 7d5e3a55d916141b789c296085c3730e53fd3b4b Maintainer: seros Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<refentry xml:id="mongodb.command" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>MongoDB::command</refname>
<refpurpose>Ejecuta una orden de base de datos</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>array</type><methodname>MongoDB::command</methodname>
<methodparam><type>array</type><parameter>command</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>options</parameter><initializer>array()</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter role="reference">hash</parameter></methodparam>
</methodsynopsis>
<para>
Prácticamente todo lo que no son operaciones CRUD se puede realizar con una orden de
base de datos. ¿Necesita conocer la versión de la base de datos? Hay una orden para ello.
¿Necesita hacer una agregación? Hay una orden para ello. ¿Necesia habilitar la
identificación? Ha captado la idea.
</para>
<para>
Este método es idéntico a:
<programlisting role="php">
<![CDATA[
<?php
public function command($datos) {
return $this->selectCollection('$cmd')->findOne($datos);
}
?>
]]>
</programlisting>
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term>
<parameter>command</parameter>
</term>
<listitem>
<para>
La Consulta a enviar.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>options</parameter>
</term>
<listitem>
<para>
Un array de opciones para la creación del índice. Actualmente las opciones
disponibles incluyen:
<itemizedlist>
&mongo.writes.parameters.sockettimeoutms;
</itemizedlist>
</para>
<para>
Las siguientes opciones están obsoletas y no deberían utilizarse más:
<itemizedlist>
&mongo.writes.parameters.timeout;
</itemizedlist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>hash</parameter>
</term>
<listitem>
<para>
Establecer el hash de conexión del servidor que ejecutó la orden. Cuando
el resultado de la orden es apropiado para crear un
<classname>MongoCommandCursor</classname>, el objeto del hash es
pasarlo a <function>MongoCommandCursor::createFromDocument</function>.
</para>
<para>
El hash también se corresponderá con una conexión devuelta desde
<function>MongoClient::getConnections</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</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 renombró la opción <literal>"timeout"</literal> a
<literal>"socketTimeoutMS"</literal>. Emite un error
<constant>E_DEPRECATED</constant> al utilizar
<literal>"timeout"</literal>.
</para>
<para>
Se añadió el parámetro por referencia <literal>hash</literal>.
</para>
</entry>
</row>
<row>
<entry>1.2.0</entry>
<entry>
Se añadió el parámetro <literal>options</literal> con una única opción:
<literal>timeout</literal>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve la respuesta de la base de datos. Cada respuesta de la base de datos siempre es como máximo
un documento, lo que significa que el resultado de una orden de base de datos nunca puede
exceder 16 MB. La estructura del documento resultante depende de la orden, pero
la mayoría de los resultados tendrán el campo <literal>ok</literal> para indicar éxito
o fracaso, y <literal>results</literal>, que contiene un array por cada
documento resultante.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Ejemplo de <function>MongoDB::command</function> con "distinct"</title>
<para>
Buscar todos los valores distintos de una clave.
</para>
<programlisting role="php">
<![CDATA[
<?php
$personas = $bd->personas;
$personas->insert(array("nombre" => "Joe", "edad" => 4));
$personas->insert(array("nombre" => "Sally", "edad" => 22));
$personas->insert(array("nombre" => "Dave", "edad" => 22));
$personas->insert(array("nombre" => "Molly", "edad" => 87));
$edades = $bd->command(array("distinct" => "personas", "key" => "edad"));
foreach ($edades['values'] as $edad) {
echo "$edad\n";
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
4
22
87
</screen>
</example>
<example>
<title>Ejemplo de <function>MongoDB::command</function> con "distinct"</title>
<para>
Buscar todos los valores distintos de una clave, donde el valor es mayor
o igual a 18.
</para>
<programlisting role="php">
<![CDATA[
<?php
$personas= $bd->personas;
$personas->insert(array("nombre" => "Joe", "edad" => 4));
$personas->insert(array("nombre" => "Sally", "edad" => 22));
$personas->insert(array("nombre" => "Dave", "edad" => 22));
$personas->insert(array("nombre" => "Molly", "edad" => 87));
$edades = $bd->command(
array(
"distinct" => "personas",
"key" => "edad",
"query" => array("edad" => array('$gte' => 18))
)
);
foreach ($edades['values'] as $edad) {
echo "$edad\n";
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
22
87
</screen>
</example>
<example>
<title>Ejemplo de <function>MongoDB::command</function> con MapReduce</title>
<para>
Obtener todos los usuarios con al menos un evento de venta ("sale"), y cuántas veces
han realizado ventas cada uno de esos usuarios.
</para>
<programlisting role="php">
<![CDATA[
<?php
// documento de eventos de ejemplo
$eventos->insert(array("user_id" => $id,
"type" => $tipo,
"time" => new MongoDate(),
"desc" => $descripción));
// construcción del mapa y función reductora
$mapa = new MongoCode("function() { emit(this.user_id,1); }");
$reductora = new MongoCode("function(k, vals) { ".
"var sum = 0;".
"for (var i in vals) {".
"sum += vals[i];".
"}".
"return sum; }");
$sales = $bd->command(array(
"mapreduce" => "events",
"map" => $mapa,
"reduce" => $reductora,
"query" => array("type" => "sale"),
"out" => array("merge" => "eventCounts")));
$usuarios = $bd->selectCollection($sales['result'])->find();
foreach ($usuarios as $usuario) {
echo "El usuario {$usuario['_id']} realizó {$usuario['value']} venta(s).\n";
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
El usuario 47cc67093475061e3d9536d2 realizó 3 venta(s).
El usuario 49902cde5162504500b45c2c realizó 14 venta(s).
El usuario 4af467e4fd543cce7b0ea8e2 realizó 1 venta(s).
</screen>
<note>
<title>Usando <classname>MongoCode</classname></title>
<para>
Este ejemplo utiliza <classname>MongoCode</classname>, que puede utilizar también un
argumento de ámbito. Sin embargo, por el momento, MongoDB no admite el uso de
ámbitos en MapReduce. Si fuera necesario usar variables en el lado del cliente con las
funciones MapReduce, puede añairlas al ámbito global usando el campo opcional de
ámbito con la orden de la base de datos. Consulte la
<link xlink:href="&url.mongodb.dochub.mapreduce;">documentación de MapReduce</link>
para más información.
</para>
</note>
<note>
<title>El argumento <literal>out</literal></title>
<para>
Antes de 1.8.0, el argumento <literal>out</literal> era opcional. Si no se iba
a usar, los resultados de MapReduce se escribían a una colección temporal,
que se eliminaba cuando se cerraba la conexión. A partir de la versión 1.8.0, el
argumento <literal>out</literal> es obligatorio. Consulte la
<link xlink:href="&url.mongodb.dochub.mapreduce;">documentación de MapReduce</link>
para más información.
</para>
</note>
</example>
<example>
<title>Ejemplo de <function>MongoDB::command</function> con "geoNear"</title>
<para>
Este ejemplo muestra cómo usar la orden geoNear.
</para>
<programlisting role="php">
<![CDATA[
<?php
$m = new MongoClient();
$d = $m->demo;
$c = $d->poiConcat;
$r = $d->command(array(
'geoNear' => "poiConcat", // Buscar en la colección poiConcat
'near' => array(-0.08, 51.48), // Buscar cerca de 51.48°N, 0.08°E
'spherical' => true, // Habilitar la búsqueda esférica
'num' => 5, // 5 documentos devueltos como máximo
));
print_r($r);
?>
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>MongoCollection::aggregate</methodname></member>
<member><methodname>MongoCollection::findAndModify</methodname></member>
<member><methodname>MongoCollection::group</methodname></member>
</simplelist>
</para>
<para>
La documentación de MongoDB sobre
<link xlink:href="&url.mongodb.dochub.commands;">órdenes de base de datos</link>
y las órdenes individuales:
<link xlink:href="&url.mongodb.dochub.findandmodify;">findAndModify</link>,
<link xlink:href="&url.mongodb.dochub.getlasterror;">getLastError</link>, y
<link xlink:href="&url.mongodb.dochub.repairdatabase;">repair</link> (existen muchas más,
éstos son sólo unos pocos ejemplos).
</para>
</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
-->