MongoDB::command Выполняет команду базы данных &reftitle.description; public arrayMongoDB::command arraycommand arrayoptionsarray() stringhash Почти все, что не является операцией CRUD, может быть выполнено с помощью команды базы данных. Нужно узнать версию базы данных? Для этого есть команда. Нужно сделать агрегацию? Для этого есть команда. Нужно включить запись событий? Вы поняли идею. Этот метод идентичен: selectCollection('$cmd')->findOne($data); } ?> ]]> &reftitle.parameters; command Запрос на отправку. options Массив опций для создания индекса. В настоящее время доступны следующие варианты: &mongo.writes.parameters.sockettimeoutms; Следующие параметры устарели и больше не должны использоваться: &mongo.writes.parameters.timeout; hash Установите хеш подключения сервера, который выполнил команду. Когда результат команды подходит для создания MongoCommandCursor, хеш предназначен для передачи в MongoCommandCursor::createFromDocument. Хеш также будет соответствовать соединению, возвращенному из MongoClient::getConnections. &reftitle.changelog; &Version; &Description; PECL mongo 1.5.0 Переименована опция "timeout" в "socketTimeoutMS". Выдает E_DEPRECATED при использовании "timeout". Добавлен параметр ссылки на hash. PECL mongo 1.2.0 Добавлен параметр options с одним вариантом: "timeout". &reftitle.returnvalues; Возвращает ответ базы данных. Каждый ответ базы данных всегда является максимум одним документом, что означает, что результат команды базы данных никогда не может превышать 16 Мб. Структура результирующего документа зависит от команды, но большинство результатов будет иметь поле ok, указывающее успех или неудачу, и results, содержащие массив каждого из результирующих документов. &reftitle.examples; Пример использования <function>MongoDB::command</function> "distinct" Поиск всех различных значений для ключа. people; $people->insert(array("name" => "Joe", "age" => 4)); $people->insert(array("name" => "Sally", "age" => 22)); $people->insert(array("name" => "Dave", "age" => 22)); $people->insert(array("name" => "Molly", "age" => 87)); $ages = $db->command(array("distinct" => "people", "key" => "age")); foreach ($ages['values'] as $age) { echo "$age\n"; } ?> ]]> &example.outputs.similar; 4 22 87 Пример использования <function>MongoDB::command</function> "distinct" Поиск всех различных значений для ключа, где значение больше или равно 18. people; $people->insert(array("name" => "Joe", "age" => 4)); $people->insert(array("name" => "Sally", "age" => 22)); $people->insert(array("name" => "Dave", "age" => 22)); $people->insert(array("name" => "Molly", "age" => 87)); $ages = $db->command( array( "distinct" => "people", "key" => "age", "query" => array("age" => array('$gte' => 18)) ) ); foreach ($ages['values'] as $age) { echo "$age\n"; } ?> ]]> &example.outputs.similar; 22 87 Пример использования <function>MongoDB::command</function> MapReduce Получение всех пользователей, у которых есть хотя бы одно событие "sale", и сколько раз каждый из этих пользователей совершил распродажу. insert(array("user_id" => $id, "type" => $type, "time" => new MongoDate(), "desc" => $description)); // конструктор карты и reduce функции $map = new MongoCode("function() { emit(this.user_id,1); }"); $reduce = new MongoCode("function(k, vals) { ". "var sum = 0;". "for (var i in vals) {". "sum += vals[i];". "}". "return sum; }"); $sales = $db->command(array( "mapreduce" => "events", "map" => $map, "reduce" => $reduce, "query" => array("type" => "sale"), "out" => array("merge" => "eventCounts"))); $users = $db->selectCollection($sales['result'])->find(); foreach ($users as $user) { echo "{$user['_id']} принял участие в {$user['value']} распродажах.\n"; } ?> ]]> &example.outputs.similar; User 47cc67093475061e3d9536d2 принял участие в 3 распродажах. User 49902cde5162504500b45c2c принял участие в 14 распродажах. User 4af467e4fd543cce7b0ea8e2 принял участие в 1 распродажах. Использование <classname>MongoCode</classname> В этом примере используется MongoCode, который также может принимать аргумент scope. Однако в настоящее время MongoDB не поддерживает использование scope в MapReduce. Если вы хотите использовать переменные на стороне клиента в функциях MapReduce, вы можете добавить их в глобальную область, используя необязательное поле scope с командой базы данных. Смотрите документацию MapReduce для получения дополнительной информации. Аргумент <literal>out</literal> До 1.8.0 аргумент out был необязательным. Если вы его не используете, результаты MapReduce будут записаны во временную коллекцию, которая будет удалена при закрытии вашего соединения. В 1.8.0+ требуется аргумент out. Смотрите документацию MapReduce для получения дополнительной информации. Пример использования <function>MongoDB::command</function> "geoNear" В этом примере показано, как использовать команду geoNear. demo; $c = $d->poiConcat; $r = $d->command(array( 'geoNear' => "poiConcat", // Поиск в коллекции poiConcat 'near' => array(-0.08, 51.48), // Поиск около 51.48° с.ш., 0.08° в.д. 'spherical' => true, // Включение сферический поиск 'num' => 5, // Максимум 5 возвращенных документов )); print_r($r); ?> ]]> &reftitle.seealso; MongoCollection::aggregate MongoCollection::findAndModify MongoCollection::group Основная документация MongoDB по командам базы данных.