MongoDB::command Execute a database command &reftitle.description; public arrayMongoDB::command arraydata 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. This method is identical to running: selectCollection('$cmd')->findOne($data); ?> ]]> &reftitle.parameters; data The query to send. &reftitle.returnvalues; Returns database response. &reftitle.examples; <function>MongoDB::command</function> "distinct" example Finding all of the distinct values for a key. 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> map/reduce example Get all users with at least on "sale" event, and how many times each of these users has had a sale. 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"; } ?> ]]> &example.outputs.similar; User 47cc67093475061e3d9536d2 had 3 sale(s). User 49902cde5162504500b45c2c had 14 sale(s). User 4af467e4fd543cce7b0ea8e2 had 1 sale(s). If you are going to be using MapReduce, Prajwal Tuladhar created an API for Mongo PHP users which provides a nicer interface than the bare command. You can download it from Github and there is a blog post on how to use it.