mirror of
https://github.com/php/doc-ru.git
synced 2025-08-16 18:22:04 +00:00
new: mongocollection + mongo
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@347236 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
583
reference/mongo/mongocollection/aggregate.xml
Normal file
583
reference/mongo/mongocollection/aggregate.xml
Normal file
@ -0,0 +1,583 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 0d871eae6ef2187b9b89c16109afc4697ab6fa12 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="mongocollection.aggregate" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>MongoCollection::aggregate</refname>
|
||||
<refpurpose>Выполняет агрегацию с использованием структуры агрегации</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>array</type><methodname>MongoCollection::aggregate</methodname>
|
||||
<methodparam><type>array</type><parameter>pipeline</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter>options</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>array</type><methodname>MongoCollection::aggregate</methodname>
|
||||
<methodparam><type>array</type><parameter>op</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter>op</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter>...</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<link xlink:href="&url.mongodb.docs.aggregation;">Платформа агрегации</link> MongoDB
|
||||
предоставляет средства для вычисления агрегированных значений без использования MapReduce.
|
||||
Несмотря на то, что MapReduce является мощным средством, оно зачастую сложнее,
|
||||
чем необходимо для многих простых задач агрегирования, таких как суммирование
|
||||
или вычисление среднего значения полей.
|
||||
</para>
|
||||
<para>
|
||||
Метод принимает либо переменное количество операторов конвейера,
|
||||
либо один массив операторов, составляющих конвейер.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>pipeline</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Массив операторов конвейера.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>options</parameter></term>
|
||||
<listitem>
|
||||
<para>Опции для команды агрегации. Допустимые варианты:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><literal>"allowDiskUse"</literal></para>
|
||||
<para>Разрешить этапы агрегации для записи во временные файлы</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>"cursor"</literal></para>
|
||||
<para>
|
||||
Опции, управляющие созданием объекта курсора.
|
||||
Эта опция заставляет команду возвращать результат документа,
|
||||
подходящий для создания <classname>MongoCommandCursor</classname>.
|
||||
Если вам нужно использовать эту опцию,
|
||||
вы должны рассмотреть возможность
|
||||
использования <methodname>MongoCollection::aggregateCursor</methodname>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>"explain"</literal></para>
|
||||
<para>Вернуть информацию об обработке конвейера.</para>
|
||||
</listitem>
|
||||
&mongo.command.parameters.maxtimems;
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>Or</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>op</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Первый оператор конвейера.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>op</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Второй оператор конвейера.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>...</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Дополнительные операторы конвейера.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Результат агрегации в виде массива. <varname>ok</varname> будет
|
||||
установлен в качестве <literal>1</literal> в случае успеха,
|
||||
<literal>0</literal> в случае ошибки.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="errors">
|
||||
&reftitle.errors;
|
||||
<para>
|
||||
При возникновении ошибки возвращается массив со следующими ключами:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<varname>errmsg</varname> - с указанием причины отказа
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<varname>code</varname> - код ошибки сбоя
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<varname>ok</varname> - будет установлен 0.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="changelog"><!-- {{{ -->
|
||||
&reftitle.changelog;
|
||||
<informaltable>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>&Version;</entry>
|
||||
<entry>&Description;</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>1.5.0</entry>
|
||||
<entry>
|
||||
Добавлен необязательный аргумент <parameter>options</parameter>
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
</refsect1><!-- }}} -->
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<example xml:id="mongocollection.aggregate.example.basic">
|
||||
<title>Пример использования <methodname>MongoCollection::aggregate</methodname></title>
|
||||
<para>
|
||||
В следующем примере операция агрегирования поворачивает данные,
|
||||
чтобы создать набор имен авторов, сгруппированных по тегам,
|
||||
примененным к статье. Вызовите структуру агрегации, введя следующую команду:
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$m = new MongoClient("localhost");
|
||||
$c = $m->selectDB("examples")->selectCollection("article");
|
||||
$data = array (
|
||||
'title' => 'this is my title',
|
||||
'author' => 'bob',
|
||||
'posted' => new MongoDate,
|
||||
'pageViews' => 5,
|
||||
'tags' => array ( 'fun', 'good', 'fun' ),
|
||||
'comments' => array (
|
||||
array (
|
||||
'author' => 'joe',
|
||||
'text' => 'this is cool',
|
||||
),
|
||||
array (
|
||||
'author' => 'sam',
|
||||
'text' => 'this is bad',
|
||||
),
|
||||
),
|
||||
'other' =>array (
|
||||
'foo' => 5,
|
||||
),
|
||||
);
|
||||
$d = $c->insert($data, array("w" => 1));
|
||||
|
||||
$ops = array(
|
||||
array(
|
||||
'$project' => array(
|
||||
"author" => 1,
|
||||
"tags" => 1,
|
||||
)
|
||||
),
|
||||
array('$unwind' => '$tags'),
|
||||
array(
|
||||
'$group' => array(
|
||||
"_id" => array("tags" => '$tags'),
|
||||
"authors" => array('$addToSet' => '$author'),
|
||||
),
|
||||
),
|
||||
);
|
||||
$results = $c->aggregate($ops);
|
||||
var_dump($results);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(2) {
|
||||
["result"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
array(1) {
|
||||
["tags"]=>
|
||||
string(4) "good"
|
||||
}
|
||||
["authors"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "bob"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
array(1) {
|
||||
["tags"]=>
|
||||
string(3) "fun"
|
||||
}
|
||||
["authors"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "bob"
|
||||
}
|
||||
}
|
||||
}
|
||||
["ok"]=>
|
||||
float(1)
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
В следующих примерах используется
|
||||
<link xlink:href="&url.mongodb.examples.zipcode;">набор данных zipcode</link>.
|
||||
Используйте mongoimport для загрузки этого набора данных в ваш экземпляр mongod.
|
||||
</para>
|
||||
|
||||
<example xml:id="mongocollection.aggregate.example.zipcode.population">
|
||||
<title>Пример использования <methodname>MongoCollection::aggregate</methodname></title>
|
||||
<para>
|
||||
Чтобы вернуть все штаты с населением более 10 миллионов, используйте следующую операцию агрегирования:
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$m = new MongoClient("localhost");
|
||||
$c = $m->selectDB("test")->selectCollection("zips");
|
||||
|
||||
$pipeline = array(
|
||||
array(
|
||||
'$group' => array(
|
||||
'_id' => array('state' => '$state'),
|
||||
'totalPop' => array('$sum' => '$pop')
|
||||
)
|
||||
),
|
||||
array(
|
||||
'$match' => array(
|
||||
'totalPop' => array('$gte' => 10 * 1000 * 1000)
|
||||
)
|
||||
),
|
||||
);
|
||||
$out = $c->aggregate($pipeline);
|
||||
var_dump($out);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(2) {
|
||||
["result"]=>
|
||||
array(7) {
|
||||
[0]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "TX"
|
||||
["totalPop"]=>
|
||||
int(16986510)
|
||||
}
|
||||
[1]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "PA"
|
||||
["totalPop"]=>
|
||||
int(11881643)
|
||||
}
|
||||
[2]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "NY"
|
||||
["totalPop"]=>
|
||||
int(17990455)
|
||||
}
|
||||
[3]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "IL"
|
||||
["totalPop"]=>
|
||||
int(11430602)
|
||||
}
|
||||
[4]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "CA"
|
||||
["totalPop"]=>
|
||||
int(29760021)
|
||||
}
|
||||
[5]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "OH"
|
||||
["totalPop"]=>
|
||||
int(10847115)
|
||||
}
|
||||
[6]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "FL"
|
||||
["totalPop"]=>
|
||||
int(12937926)
|
||||
}
|
||||
}
|
||||
["ok"]=>
|
||||
float(1)
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
<example xml:id="mongocollection.aggregate.example.zipcode.population.average">
|
||||
<title>Пример использования <methodname>MongoCollection::aggregate</methodname></title>
|
||||
<para>
|
||||
Чтобы получить среднюю численность населения по городам в каждом штате, используйте следующую операцию агрегирования:
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$m = new MongoClient;
|
||||
$c = $m->selectDB("test")->selectCollection("zips");
|
||||
|
||||
$out = $c->aggregate(
|
||||
array(
|
||||
'$group' => array(
|
||||
'_id' => array('state' => '$state', 'city' => '$city' ),
|
||||
'pop' => array('$sum' => '$pop' )
|
||||
)
|
||||
),
|
||||
array(
|
||||
'$group' => array(
|
||||
'_id' => '$_id.state',
|
||||
'avgCityPop' => array('$avg' => '$pop')
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
var_dump($out);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(2) {
|
||||
["result"]=>
|
||||
array(51) {
|
||||
[0]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "DC"
|
||||
["avgCityPop"]=>
|
||||
float(303450)
|
||||
}
|
||||
[1]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "DE"
|
||||
["avgCityPop"]=>
|
||||
float(14481.913043478)
|
||||
}
|
||||
...
|
||||
[49]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "WI"
|
||||
["avgCityPop"]=>
|
||||
float(7323.0074850299)
|
||||
}
|
||||
[50]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(2) "WV"
|
||||
["avgCityPop"]=>
|
||||
float(2759.1953846154)
|
||||
}
|
||||
}
|
||||
["ok"]=>
|
||||
float(1)
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
<example xml:id="mongocollection.aggregate.example.zipcode.explain">
|
||||
<title><methodname>MongoCollection::aggregate</methodname>с параметрами команды</title>
|
||||
<para>
|
||||
Чтобы вернуть информацию о том, как будет обрабатываться конвейер,
|
||||
мы используем опцию команды <literal>explain</literal>:
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$m = new MongoClient;
|
||||
$c = $m->selectDB("test")->selectCollection("zips");
|
||||
|
||||
$pipeline = array(
|
||||
array(
|
||||
'$group' => array(
|
||||
'_id' => '$state',
|
||||
'totalPop' => array('$sum' => '$pop'),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'$match' => array(
|
||||
'totalPop' => array('$gte' => 10 * 1000 * 1000)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'$sort' => array("totalPop" => -1),
|
||||
),
|
||||
);
|
||||
|
||||
$options = array("explain" => true);
|
||||
$out = $c->aggregate($pipeline, $options);
|
||||
var_dump($out);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(2) {
|
||||
["stages"]=>
|
||||
array(4) {
|
||||
[0]=>
|
||||
array(1) {
|
||||
["$cursor"]=>
|
||||
array(3) {
|
||||
["query"]=>
|
||||
array(0) {
|
||||
}
|
||||
["fields"]=>
|
||||
array(3) {
|
||||
["pop"]=>
|
||||
int(1)
|
||||
["state"]=>
|
||||
int(1)
|
||||
["_id"]=>
|
||||
int(0)
|
||||
}
|
||||
["plan"]=>
|
||||
array(4) {
|
||||
["cursor"]=>
|
||||
string(11) "BasicCursor"
|
||||
["isMultiKey"]=>
|
||||
bool(false)
|
||||
["scanAndOrder"]=>
|
||||
bool(false)
|
||||
["allPlans"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["cursor"]=>
|
||||
string(11) "BasicCursor"
|
||||
["isMultiKey"]=>
|
||||
bool(false)
|
||||
["scanAndOrder"]=>
|
||||
bool(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(1) {
|
||||
["$group"]=>
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
string(6) "$state"
|
||||
["totalPop"]=>
|
||||
array(1) {
|
||||
["$sum"]=>
|
||||
string(4) "$pop"
|
||||
}
|
||||
}
|
||||
}
|
||||
[2]=>
|
||||
array(1) {
|
||||
["$match"]=>
|
||||
array(1) {
|
||||
["totalPop"]=>
|
||||
array(1) {
|
||||
["$gte"]=>
|
||||
int(10000000)
|
||||
}
|
||||
}
|
||||
}
|
||||
[3]=>
|
||||
array(1) {
|
||||
["$sort"]=>
|
||||
array(1) {
|
||||
["sortKey"]=>
|
||||
array(1) {
|
||||
["totalPop"]=>
|
||||
int(-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
["ok"]=>
|
||||
float(1)
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<simplelist>
|
||||
<member><methodname>MongoCollection::aggregateCursor</methodname></member>
|
||||
<member><link xlink:href="&url.mongodb.docs.aggregation;">Структуры агрегации</link> MongoDB</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
|
||||
-->
|
85
reference/mongo/mongocollection/construct.xml
Normal file
85
reference/mongo/mongocollection/construct.xml
Normal file
@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: efc16a7a338ad0002b4ed2ed660ea682dfd22ef4 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="mongocollection.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>MongoCollection::__construct</refname>
|
||||
<refpurpose>Создает новую коллекцию</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <methodname>MongoCollection::__construct</methodname>
|
||||
<methodparam><type>MongoDB</type><parameter>db</parameter></methodparam>
|
||||
<methodparam><type>string</type><parameter>name</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<type>MongoDB</type>
|
||||
<parameter>db</parameter>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Родительская база данных.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<parameter>name</parameter>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Название для этой коллекции.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает новый объект коллекции.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="errors">
|
||||
&reftitle.errors;
|
||||
<para>
|
||||
Выдает исключение по умолчанию, если имя коллекции недопустимо.
|
||||
</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
|
||||
-->
|
105
reference/mongo/mongocollection/createdbref.xml
Normal file
105
reference/mongo/mongocollection/createdbref.xml
Normal file
@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 88fb3e60e4165df620d3c8ead7111db54d38f8cd Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="mongocollection.createdbref" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>MongoCollection::createDBRef</refname>
|
||||
<refpurpose>Создает ссылку на базу данных</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>public</modifier> <type>array</type><methodname>MongoCollection::createDBRef</methodname>
|
||||
<methodparam><type>mixed</type><parameter>document_or_id</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<parameter>document_or_id</parameter>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Если указан массив или объект, его поле <literal>_id</literal>
|
||||
будет использоваться в качестве идентификатора ссылки.
|
||||
Если указан <classname>MongoId</classname> или скаляр,
|
||||
он будет использоваться в качестве ссылочного идентификатора.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает массив ссылок на базу данных.
|
||||
</para>
|
||||
<para>
|
||||
Если в качестве параметра <literal>document_or_id</literal>
|
||||
был указан массив без поля <literal>_id</literal>,
|
||||
будет возвращено значение &null;.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<example>
|
||||
<title>Пример использования <methodname>MongoCollection::createDBRef</methodname></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$songs = $db->songs;
|
||||
$playlists = $db->playlists;
|
||||
|
||||
// создаем ссылку на песню
|
||||
$manamana = $songs->findOne(array('title' => 'Ma na ma na'));
|
||||
$refToSong = $songs->createDBRef($manamana);
|
||||
|
||||
// добавляем ссылку в мой плейлист
|
||||
$playlists->update(array('username' => 'me'), array('$push' => array('songlist' => $refToSong)));
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member><methodname>MongoCollection::getDBRef</methodname></member>
|
||||
</simplelist>
|
||||
</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
|
||||
-->
|
583
reference/mongo/tutorial.xml
Normal file
583
reference/mongo/tutorial.xml
Normal file
@ -0,0 +1,583 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: b2357fc62a4d09fa67bb7f4f022ddb68091d61c0 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<chapter xml:id="mongo.tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Руководство</title>
|
||||
<warning>
|
||||
&mongo.deprecated.note;
|
||||
</warning>
|
||||
<para>
|
||||
Это официальный драйвер MongoDB для PHP.
|
||||
</para>
|
||||
<para>
|
||||
Вот быстрый пример кода, который соединяется с MongoDB, вставляет и запрашивает документы,
|
||||
выполняет итерацию результатов запроса и отключается.
|
||||
Подробнее о каждом шаге в руководстве ниже.
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.basics">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// соединяемся
|
||||
$m = new MongoClient();
|
||||
|
||||
// выбираем базу данных
|
||||
$db = $m->comedy;
|
||||
|
||||
// выбираем коллекцию (аналог таблицы реляционной базы данных)
|
||||
$collection = $db->cartoons;
|
||||
|
||||
// добавляем запись
|
||||
$document = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
|
||||
$collection->insert($document);
|
||||
|
||||
// добавляем еще одну запись, с другой "формой"
|
||||
$document = array( "title" => "XKCD", "online" => true );
|
||||
$collection->insert($document);
|
||||
|
||||
// находим все в коллекции
|
||||
$cursor = $collection->find();
|
||||
|
||||
// перебираем результаты
|
||||
foreach ($cursor as $document) {
|
||||
echo $document["title"] . "\n";
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
Calvin and Hobbes
|
||||
XKCD
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
|
||||
<section xml:id="mongo.tutorial.connecting">
|
||||
<title>Создание соединения</title>
|
||||
<para>
|
||||
Чтобы подключиться к серверу базы данных, используйте одну из следующих конструкций:
|
||||
</para>
|
||||
|
||||
<example xml:id="mongo.tutorial.connecting-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient(); // подключаемся к localhost:27017
|
||||
$connection = new MongoClient( "mongodb://example.com" ); // подключиться к удаленному хосту (порт по умолчанию: 27017)
|
||||
$connection = new MongoClient( "mongodb://example.com:65432" ); // подключиться к удаленному хосту по заданному порту
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Вам не нужно явно отключаться от базы данных.
|
||||
Драйвер использует постоянные соединения и будет повторно использовать уже установленные соединения.
|
||||
</para>
|
||||
<section xml:id="mongo.tutorial.connecting.seealso">
|
||||
<title>Смотрите также</title>
|
||||
<para>
|
||||
Глава о <link linkend="mongo.connecting">подключении</link>,
|
||||
охватывающая различные типы соединений.
|
||||
</para>
|
||||
<para>
|
||||
Документация по API для класса <classname>MongoClient</classname>
|
||||
и <function>MongoClient::__construct</function> дает исчерпывающий
|
||||
обзор всех возможных вариантов с несколькими примерами.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.selectdb">
|
||||
<title>Получение базы данных</title>
|
||||
<para>
|
||||
Чтобы выбрать базу данных, используйте:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.selectdb-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$db = $connection->dbname;
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
База данных не обязательно должна быть создана заранее,
|
||||
вы можете создать новые базы данных, просто выбрав их.
|
||||
</para>
|
||||
<para>
|
||||
Будьте осторожны с опечатками!
|
||||
Вы можете непреднамеренно создать новую базу данных,
|
||||
что может привести к сбивающим с толку ошибкам
|
||||
(ниже приведен код, когда используется <literal>name</literal>
|
||||
и неправильно введенное <literal>anme</literal> во втором случае:
|
||||
|
||||
<example xml:id="mongo.tutorial.selectdb.typo">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
|
||||
$db = $connection->mybiglongdbname;
|
||||
// делаем что-нибудь
|
||||
|
||||
$db = $connection->mybiglongdbanme;
|
||||
// сейчас мы подключены к другой базе данных!
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
<section xml:id="mongo.tutorial.selectdb.seealso">
|
||||
<title>Смотрите также</title>
|
||||
<para>
|
||||
Документация по API для класса <classname>MongoDB</classname>
|
||||
содержит больше информации об объектах базы данных.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.collection">
|
||||
<title>Получение коллекции</title>
|
||||
<para>
|
||||
Получение коллекции имеет тот же синтаксис, что и получение базы данных:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.collection-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$db = $connection->baz;
|
||||
|
||||
// выбираем коллекцию:
|
||||
$collection = $db->foobar;
|
||||
|
||||
// или, непосредственно выбирем базу данных и коллекцию:
|
||||
$collection = $connection->baz->foobar;
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Коллекция аналогична таблице (если вы знакомы с реляционными базами данных).
|
||||
</para>
|
||||
<section xml:id="mongo.tutorial.collection.seealso">
|
||||
<title>Смотрите также</title>
|
||||
<para>
|
||||
Документация по API для класса <classname>MongoCollection</classname>
|
||||
содержит больше информации об объектах коллекции.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.insert">
|
||||
<title>Вставка документа</title>
|
||||
<para>
|
||||
Ассоциативные массивы - это базовый объект,
|
||||
который можно сохранить в коллекции в базе данных.
|
||||
Например, "документ" может быть:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.insert-data-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$doc = array(
|
||||
"name" => "MongoDB",
|
||||
"type" => "database",
|
||||
"count" => 1,
|
||||
"info" => (object)array( "x" => 203, "y" => 102),
|
||||
"versions" => array("0.9.7", "0.9.8", "0.9.9")
|
||||
);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Обратите внимание, что вы можете иметь вложенные массивы и объекты.
|
||||
Драйвер всегда будет хранить ассоциативный массив как объект в базе данных.
|
||||
Численно индексированный массив сохраняется как массив в случае,
|
||||
если ключи начинаются с 0 и не прерываются, и как объект,
|
||||
если ключи массива не начинаются с 0
|
||||
или имеют пробелы (то есть: <literal>0, 1, 4, 5</literal>).
|
||||
</para>
|
||||
<para>
|
||||
Чтобы вставить этот документ, используйте <function>MongoCollection::insert</function>:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.insert-example-2">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$collection->insert( $doc );
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<section xml:id="mongo.tutorial.insert.seealso">
|
||||
<title>Смотрите также</title>
|
||||
<para>
|
||||
Документация API к <function>MongoCollection::insert</function>
|
||||
содержит больше информации о вставке данных.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.findone">
|
||||
<title>
|
||||
Поиск документов с помощью <function>MongoCollection::findOne</function>
|
||||
</title>
|
||||
<para>
|
||||
Чтобы показать, что документ, который мы вставили на предыдущем шаге,
|
||||
хранится в базе данных, мы можем выполнить простую
|
||||
операцию <function>MongoCollection::findOne</function>,
|
||||
чтобы получить один документ из коллекции.
|
||||
Этот метод полезен, когда существует только один документ,
|
||||
соответствующий запросу, или вас интересует только один результат.
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.findone-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$document = $collection->findOne();
|
||||
var_dump( $document );
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(6) {
|
||||
["_id"]=>
|
||||
object(MongoId)#8 (1) {
|
||||
["$id"]=>
|
||||
string(24) "4e2995576803fab768000000"
|
||||
}
|
||||
["name"]=>
|
||||
string(7) "MongoDB"
|
||||
["type"]=>
|
||||
string(8) "database"
|
||||
["count"]=>
|
||||
int(1)
|
||||
["info"]=>
|
||||
array(2) {
|
||||
["x"]=>
|
||||
int(203)
|
||||
["y"]=>
|
||||
int(102)
|
||||
}
|
||||
["versions"]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(5) "0.9.7"
|
||||
[1]=>
|
||||
string(5) "0.9.8"
|
||||
[2]=>
|
||||
string(5) "0.9.9"
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<para>
|
||||
Обратите внимание, что есть поле <literal>_id</literal>,
|
||||
которое было автоматически добавлено в ваш документ. <literal>_id</literal> - это поле
|
||||
"первичный ключ". Если в вашем документе он не указан, драйвер добавит его автоматически.
|
||||
</para>
|
||||
<para>
|
||||
Если вы укажете свое собственное поле <literal>_id</literal>,
|
||||
оно должно быть уникальным для коллекции. Смотрите пример здесь:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.findone-example-2">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$db = $connection->database;
|
||||
|
||||
$db->foo->insert(array("_id" => 1));
|
||||
// это выдаст исключение
|
||||
$db->foo->insert(array("_id" => 1));
|
||||
|
||||
// здесь все хорошо, так как это другая коллекция
|
||||
$db->bar->insert(array("_id" => 1));
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
По умолчанию драйвер гарантирует, что сервер подтвердил запись перед возвратом.
|
||||
Вы можете при желании отключить это поведение,
|
||||
передав <literal>array("w" => 0)</literal> в качестве второго аргумента.
|
||||
Это означает, что драйвер не должен ждать,
|
||||
пока база данных подтвердит запись,
|
||||
и не вызовет исключение дубликата <literal>_id</literal>.
|
||||
</para>
|
||||
<section xml:id="mongo.tutorial.findone.seealso">
|
||||
<title>Смотрите также</title>
|
||||
<para>
|
||||
<function>MongoCollection::findOne</function>
|
||||
для получения дополнительной информации о поиске данных.
|
||||
</para>
|
||||
<para>
|
||||
<classname>MongoId</classname> более подробно
|
||||
описывает уникальные идентификаторы.
|
||||
</para>
|
||||
<para>
|
||||
Раздел <link linkend="mongo.writes">записи</link> описывает
|
||||
более детальную запись, а в главе <xref linkend="mongo.writeconcerns" />
|
||||
подробно рассматриваются различные параметры записи.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.insert.multiple">
|
||||
<title>Добавление нескольких документов</title>
|
||||
<para>
|
||||
Чтобы сделать более интересные вещи с запросами, давайте добавим в коллекцию
|
||||
несколько простых документов. Эти документы будут иметь
|
||||
форму <literal>array( "i" => <replaceable>value</replaceable> );</literal>;
|
||||
и мы можем сделать это довольно эффективно в цикле:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.insert.multiple-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
for ( $i = 0; $i < 100; $i++ )
|
||||
{
|
||||
$collection->insert( array( 'i' => $i, "field{$i}" => $i * 2 ) );
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
Обратите внимание, что мы можем вставить массивы с разными ключами в одну коллекцию.
|
||||
Именно этот аспект мы имеем в виду, когда говорим, что MongoDB "без схемы".
|
||||
В приведенном выше примере каждый документ имеет поле <literal>i</literal>,
|
||||
а также имя поля в виде <literal>field</literal> + <literal>$i</literal>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.counting">
|
||||
<title>Подсчет документов в коллекции</title>
|
||||
<para>
|
||||
Теперь, когда мы вставили 101 документ (100, которые мы сделали в цикле, плюс первый),
|
||||
мы можем проверить, добавлены ли они все, используя метод <function>MongoCollection::count</function>.
|
||||
<example xml:id="mongo.tutorial.counting-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
echo $collection->count();
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
и это должно вывести 101.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.cursor">
|
||||
<title>Использование курсора для получения всех документов</title>
|
||||
<para>
|
||||
Чтобы получить все документы в коллекции, мы будем
|
||||
использовать <function>MongoCollection::find</function>.
|
||||
Метод find() возвращает объект <classname>MongoCursor</classname>,
|
||||
который позволяет перебирать набор документов, соответствующих нашему запросу.
|
||||
Итак, чтобы запросить все документы и распечатать их:
|
||||
|
||||
<example xml:id="mongo.tutorial.cursor-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$cursor = $collection->find();
|
||||
foreach ( $cursor as $id => $value )
|
||||
{
|
||||
echo "$id: ";
|
||||
var_dump( $value );
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
и это должно вывести все 101 документов в коллекции.
|
||||
<literal>$id</literal> - это поле <literal>_id</literal> документа (приведенное к строке),
|
||||
а <literal>$value</literal> - сам документ.
|
||||
</para>
|
||||
<section xml:id="mongo.tutorial.cursor.seealso">
|
||||
<title>Смотрите также</title>
|
||||
<para>
|
||||
Документация API по <function>MongoCollection::find</function>
|
||||
содержит больше информации о поиске данных.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.criteria">
|
||||
<title>Установка критериев для запроса</title>
|
||||
<para>
|
||||
Мы можем создать запрос для передачи в метод <function>MongoCollection::find</function>,
|
||||
чтобы получить подмножество документов в нашей коллекции.
|
||||
Например, если мы хотим найти документ, для которого значение
|
||||
поля <literal>"i"</literal> равно <literal>71</literal>, мы бы сделали следующее:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.criteria-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$query = array( 'i' => 71 );
|
||||
$cursor = $collection->find( $query );
|
||||
|
||||
while ( $cursor->hasNext() )
|
||||
{
|
||||
var_dump( $cursor->getNext() );
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(2) {
|
||||
["_id"]=>
|
||||
object(MongoId)#6 (0) {
|
||||
}
|
||||
["i"]=>
|
||||
int(71)
|
||||
["_ns"]=>
|
||||
"testCollection"
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.multi.query">
|
||||
<title>Получение набора документов с запросом</title>
|
||||
<para>
|
||||
Мы можем использовать запрос, чтобы получить набор документов из нашей коллекции.
|
||||
Например, если мы хотим получить все документы, где <literal>"i"</literal>
|
||||
> <literal>50</literal>, мы могли бы написать:
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.multi.query-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$query = array( "i" => array( '$gt' => 50 ) ); //обратите внимание на одинарные кавычки вокруг '$gt'
|
||||
$cursor = $collection->find( $query );
|
||||
|
||||
while ( $cursor->hasNext() )
|
||||
{
|
||||
var_dump( $cursor->getNext() );
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
<para>
|
||||
который должен напечатать документы, где <literal>"i"</literal> >
|
||||
<literal>50</literal>.
|
||||
Мы также можем получить диапазон, скажем, <literal>20 < i <= 30</literal>:
|
||||
</para>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$query = array( 'i' => array( '$gt' => 20, "\$lte" => 30 ) );
|
||||
$cursor = $collection->find( $query );
|
||||
|
||||
while ( $cursor->hasNext() )
|
||||
{
|
||||
var_dump( $cursor->getNext() );
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<para>
|
||||
Не забывайте всегда избегать символа $ или использовать
|
||||
одинарные кавычки. В противном случае PHP будет интерпретировать его,
|
||||
как переменную <varname>$gt</varname>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="mongo.tutorial.indexes">
|
||||
<title>Создание индекса</title>
|
||||
<para>
|
||||
MongoDB поддерживает индексы, и их очень легко добавить в коллекцию.
|
||||
Для создания индекса вы указываете имя поля и направление:
|
||||
по возрастанию (1) или по убыванию (-1).
|
||||
Следующее создает восходящий индекс в поле "i":
|
||||
</para>
|
||||
<example xml:id="mongo.tutorial.indexes-example">
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$connection = new MongoClient();
|
||||
$collection = $connection->database->collectionName;
|
||||
|
||||
$collection->ensureIndex( array( "i" => 1 ) ); // создаем индекс на "i"
|
||||
$collection->ensureIndex( array( "i" => -1, "j" => 1 ) ); // индекс на "i" по убыванию, "j" по возрастанию
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Индексирование имеет решающее значение для хорошей производительности чтения
|
||||
по мере роста ваших данных. Если вы не знакомы с индексированием,
|
||||
ознакомьтесь с документацией <function>MongoCollection::ensureIndex</function>
|
||||
и базовой документацией по <link xlink:href="&url.mongodb.dochub.indexes;">индексированию MongoDB</link>.
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<!-- 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
|
||||
-->
|
Reference in New Issue
Block a user