PHP Portal » PHP Handbuch » MongoDB::command

Werbung

MongoDB::command


(PECL mongo >=0.9.2)

MongoDB::commandExecute a database command

Beschreibung

public array MongoDB::command ( array $data )

Almost everything that is not a CRUD operation can be done with a database command. Need to know the database version? There's a command for that. Need to do aggregation? There's a command for that. Need to turn up logging? You get the idea.

Parameter-Liste

data

The query to send.

Rückgabewerte

Returns database response.

Beispiele

Beispiel #1 MongoDB::command() "distinct" example

Finding all of the distinct values for a key.

PHP Code
1
2
3
4
5
6
7
8
$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"; }

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:


4
22
87

Beispiel #2 MongoDB::command() map/reduce example

Get all users with at least on "sale" event, and how many times each of these users has had a sale.

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// sample event document $events->insert(array("user_id" => $id, "type" => $type, "time" => new MongoDate(), "desc" => $description)); // construct map and reduce functions $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"))); $users = $db->selectCollection($sales['result'])->find(); foreach ($users as $user) { echo "{$user['_id']} had {$user['value']} sale(s).\n"; }

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:


User 47cc67093475061e3d9536d2 had 3 sale(s).
User 49902cde5162504500b45c2c had 14 sale(s).
User 4af467e4fd543cce7b0ea8e2 had 1 sale(s).