MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQueryExecute a database query

Опис

final public MongoDB\Driver\Cursor MongoDB\Driver\Manager::executeQuery ( string $namespace , MongoDB\Driver\Query $query [, MongoDB\Driver\ReadPreference $readPreference ] )

Executes query on a server. If readPreference is provided, it will be used for server selection; otherwise, the default read preference will be used.

Параметри

namespace (string)

A fully qualified namespace (e.g. "databaseName.collectionName").

query (MongoDB\Driver\Query)

The MongoDB\Driver\Query to execute.

readPreference (MongoDB\Driver\ReadPreference)

Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.

Значення, що повертаються

Returns MongoDB\Driver\Cursor on success.

Помилки/Винятки

Приклади

Приклад #1 MongoDB\Driver\Manager::executeQuery() example

<?php

$manager 
= new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection'$bulk);

$filter = ['x' => ['$gt' => 1]];
$options = [
    
'projection' => ['_id' => 0],
    
'sort' => ['x' => -1],
];

$query = new MongoDB\Driver\Query($filter$options);
$cursor $manager->executeQuery('db.collection'$query);

foreach (
$cursor as $document) {
    
var_dump($document);
}

?>

Наведений вище приклад виведе:

object(stdClass)#6 (1) {
  ["x"]=>
  int(3)
}
object(stdClass)#7 (1) {
  ["x"]=>
  int(2)
}

Прогляньте Також

add a note add a note

User Contributed Notes 1 note

up
-28
Anonymous
7 years ago
$filter = [];
        if (!empty($mail_brand)) {
            $filter['mx.brand_id'] = intval($mail_brand);
        }
        if (!empty($contacttool_brand)) {
            $filter['contacttool.brand_id'] = intval($contacttool_brand);
        }
        if ($mx_switch_title == 20 || empty($province)) {
            $filter["wwwtitle"] = ['$ne' => null];
        }
        //网站标题
        if (!empty($wwwtitle)) {
            $filter['wwwtitle'] = new \MongoDB\BSON\Regex(".*{$wwwtitle}.*", '');
        }
        //只带mx的查询
        if ($mx_on_switch == 20 || empty($province)) {
            $filter["mx"] = ['$exists' => true];
        }
        //mx模糊查询
        if (!empty($mx_vague_check)) {
            $filter["mx.mx"] = new \MongoDB\BSON\Regex(".*{$mx_vague_check}.*", '');
        }

        //如果没有传递省份
        if (empty($province)) {
            $province = "shandong";
        }
        try {
            $options_base = ['connectTimeoutMS' => 500000, 'socketTimeoutMS' => 500000];
            $manager = new \MongoDB\Driver\Manager(C('mongodb_auth_url'), $options_base);
//            $readPreference = $manager->getReadPreference();
//            $server = $manager->selectServer($readPreference);
            $coll = C('default_db') . '.' . $province;
            $options = [
                "skip" => $page,
                "limit" => $rows,
                'projection' => ['createdate' => 0,
                    'expiresdate' => 0,
                    'registrant_city' => 0,
                    'registrant_street' => 0,
                    'registrant_state' => 0,
                    'updatedate' => 0,
                    'whoisserver_id' => 0,
                    'registrar_name_id' => 0,
                    'id' => 0,
                ],
            ];
            //查询记录总的数量
            $commands = [
                'count' => $province,
                'query' => $filter
            ];
            $command = new \MongoDB\Driver\Command($commands);
            $cursor = $manager->executeCommand('mxmanage', $command);
            $info = $cursor->toArray();
            $count = $info[0]->n;
            $query = new \MongoDB\Driver\Query($filter, $options);
            $rows = $manager->executeQuery($coll, $query);
            $info = [];
            foreach ($rows as $document) {
                $doc = (array)$document;
                $doc['_id'] = (string)$doc['_id'];
                $doc['mail_brand_name'] = $doc['mx']->brand_name;
                $doc['mail_mx'] = $doc['mx']->mx ?: '';
                $doc['contacttool_brand_name'] = $doc['contacttool']->brand_name;
                $doc['mx_changetime'] = !$doc['mx_changetime'] ? '' : date('Y-m-d H:i', $doc['mx_changetime']);
                $doc['contacttool_changetime'] = !$doc['contacttool_changetime'] ? '' : date('Y-m-d H:i', $doc['contacttool_changetime']);
                unset($doc['mx']);
                unset($doc['contacttool']);
                $info[] = $doc;
            }
        } catch (\MongoDB\Driver\Exception $e) {
            echo $e->getMessage(), "\n";
            exit;
        }
To Top