(mongodb >=1.0.0)
MongoDB\Driver\Query::__construct — Construct new Query
$filter
   [, array $queryOptions
  ] )
filter (array|object)The search filter.
queryOptions
| Option | Type | Description | 
|---|---|---|
| limit | integer | The number of documents to be returned | 
| batchSize | integer | The number of documents to return per batch | 
| skip | integer | The number of documents to skip before returning | 
| sort | array|object | The order in which to return matching documents | 
| modifiers | array | Meta operators modifying the output or behavior of a query | 
| projection | array|object | Specifies the fields to return using booleans or projection operators | 
| tailable | bool | Cursor will not be closed when the last data is retrieved. You can resume this cursor later | 
| slaveOk | bool | Allow query of replica set secondaries | 
| oplogReplay | bool | Internal MongoDB Server flag | 
| noCursorTimeout | bool | Do not timeout a cursor that has been idle for more then 10minutes | 
| awaitData | bool | Block rather than returning no data. After a period, time out. Useful for tailable cursor | 
| exhaust | bool | Stream the data down full blast in multiple "reply" packets. Faster when you are pulling down a lot of data and you know you want to retrieve it all | 
| partial | bool | Get partial results from mongos if some shards are down (instead of throwing an error) | 
Example #1 MongoDB\Driver\Query::__construct() example
<?php
$filter = array();
$options = array(
    /* Only return the following fields in the matching documents */
    "projection" => array(
        "title" => 1,
        "article" => 1,
    ),
    "sort" => array(
        "views" => -1,
    ),
    "modifiers" => array(
        '$comment'   => "This is a query comment",
        '$maxTimeMS' => 100,
    ),
);
$query = new MongoDB\Driver\Query($filter, $options);
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$cursor = $manager->executeQuery("databaseName.collectionName", $query, $readPreference);
foreach($cursor as $document) {
    var_dump($document);
}
?>