mirror of
https://github.com/php/doc-es.git
synced 2026-03-26 16:32:13 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@336504 c90b9560-bf6c-de11-be94-00142212c4b1
356 lines
10 KiB
XML
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
|
|
-->
|