На днях познакомился с прекрассным инструментом MongoDb. Вроде бы и ничего, но (!) Сервер: Убунту 16,04, ПХП 7.015. На него ставил из MongoDb из Pecl и установилась версия 1.2.8 И все вроде бы хорошо, но работает все как -то через Driver. Расскажу подробнее: 1. Соединение с БД: Код (Text): $mongo = new MongoDB\Driver\Manager("mongodb://localhost:27017"); И вот так во всем. Но, думаю, ничего страшного, напишу класс-обертку и погнали. Но тут начинаются трудности. 2. Очень мало актуальной документации. Сколько не гуглю, все что-то не то. И плюс было расширение Монго, о котором в инете много инфы, но ПХП пишет, что это старое Г -авно и никому это не нужно. А теперь сама проблема. Имеется файл json Код (Text): { "Header": { "ModuleId": 3, "GeneratedTime": "2017-03-31T17:24:29.5822999Z", "MsgGuid": "bfd5d9d6-a6fa-414f-903b-e09300d433a9", "MsgId": 592 }, "Peer": { "Id": 2274581, "Events": { "Event": { "Id": 6, "Name": "Birthday", "Guests": [ { "Name": "Ivan", "SecondName": "Kolomiec", "Phone": "+30xxxxx", "Status": "Active" }, { "Name": "Petro", "SecondName": "Volovec", "Phone": "+30xxxxx", "Status": "Active" }, { "Name": "Maxim", "SecondName": "Kopernic", "Phone": "+30xxxxx", "Status": "Active" }] } } } } Я его засовываю в Монгу и он там себе лежит со своим ИД, который ему присвоила система. И вот я пытаюсь сделать выборку по Peer Id, к примеру, и не могу найти, как это сделать. Выборку делаю так: Код (Text): public function select($filter,$options){ $mongo = $this->init(); $query = new MongoDB\Driver\Query($filter, $options); try { $cursor = $mongo->executeQuery($this->dbname, $query); // Debug($cursor); $cursor = MongoDB\BSON\fromPHP($cursor->toArray()); //Debug($cursor); $cursor = json_decode(MongoDB\BSON\toJSON($cursor), true); return $cursor; } catch (MongoDB\Driver\Exception\Exception $e) { echo $e->getMessage(), "\n"; } } И в ответ (если фильтр пустой) в таком формате: Код (Text): Array ( [0] => Array ( [_id] => Array ( [$oid] => 58deb6a371add833516a620c ) [Header] => Array ( [ModuleId] => 3 [GeneratedTime] => 2017-03-31T20:05:54.5391752Z [MsgGuid] => 2299fa42-e275-4c43-8fa0-51fc11ecfc89 [MsgId] => 201 ) [Peer] => Array ( [Id] => 2264593 [Events] => Array ( [Event] => Array ( [Id] => 6 ( [0] => Array ( [Name] => Ivan [SecondName] => Kolomiec [Phone] => +30xxxxx [Status] => Open [Status] => Active ) ........bla -bla-bla ........................... Есть 2 параметра: $filter и $options. По документации смотрю, фильтр может быть массивом или объектом. (Если объектом, то какого класса? ) Если делаю одномерный массив Код (Text): $filter = array("_id"=> new \MongoDB\BSON\ObjectId('58deb6a371add833516a620c')); то результат выдает. А мне ж по Пира ИД хочется. Делаю массив, как нормальный человек: Код (Text): $filter = array('Peer'=>array('Id'='2264593')); И вызываю с этим параметром. И оно мне дули крутит. Листаю интернет, а там везде примеры запросов одноуровневые. А вот что в курсоре: Код (Text): MongoDB\Driver\Cursor Object ( [database] => pusher [collection] => test1 [query] => MongoDB\Driver\Query Object ( [filter] => stdClass Object ( [Peer] => stdClass Object ( [Id] => 2264593 ) ) [options] => stdClass Object ( [limit] => 100 ) [readConcern] => ) [command] => [readPreference] => [isDead] => [currentIndex] => 0 [currentDocument] => [server] => MongoDB\Driver\Server Object ( [host] => localhost [port] => 27017 [type] => 1 [is_primary] => [is_secondary] => [is_arbiter] => [is_hidden] => [is_passive] => [last_is_master] => Array ( [ismaster] => 1 [maxBsonObjectSize] => 16777216 [maxMessageSizeBytes] => 48000000 [maxWriteBatchSize] => 1000 [localTime] => MongoDB\BSON\UTCDateTime Object ( [milliseconds] => 1490999506438 ) [maxWireVersion] => 5 [minWireVersion] => 0 [readOnly] => [ok] => 1 ) [round_trip_time] => 0 ) ) Может кто знает, как правильно составит