Здравствуйте! Проблема заключается в следующем. У меня в MongoDB есть коллекция userContacts, состоящая из 2-х полей: rel_id(int) и contacts(массив из целых чисел). При вставке (insert) изменении (update) средствами php MongoClient rel_id в новую запись записывается нормально, а в массив contacts приходит только первое значение. Например, записать нужно [0,13], а записывается только [0]. Вот коды, где всё это используется: Код (PHP): public function addUserToContacts($id, $newUserId){ $connecting_string = sprintf('mongodb://%s:%d/%s', 'localhost', 27017, 'sensorra'); $mongo = new MongoClient($connecting_string); $mongoDB = $mongo->sensorra; $collection = $mongoDB->userContacts; $userContacts = $collection->find(['rel_id'=>(int)$id]); $foundUserContact = null; foreach($userContacts as $item){ $foundUserContact = $item; break; } if($foundUserContact){ $contacts = $foundUserContact['contacts']; foreach($contacts as $item){ if($item == $newUserId){ return; } } $contacts[] = (int)$newUserId; $newdata = array('$set' => array("contacts" => $contacts)); $collection->update(array("rel_id" => (int)$id), $newdata, ['fsync'=>true]); } else { $contacts = []; $contacts[] = (int)0; $contacts[] = (int)$newUserId; //$collection->insert(['rel_id'=>(int)$id, 'contacts'=>$contacts], ['fsync'=>true, 'socketTimeoutMS'=>1000]); $collection->save(['rel_id'=>(int)$id, 'contacts'=>$contacts], ['w'=>true]); } } И ещё один код: Код (PHP): public function removeUserFromContacts($id, $removedUserId){ $connecting_string = sprintf('mongodb://%s:%d/%s', 'localhost', 27017, 'sensorra'); $mongo = new MongoClient($connecting_string); $mongoDB = $mongo->sensorra; $collection = $mongoDB->userContacts; $userContacts = $collection->find(['rel_id'=>(int)$id]); $foundUserContact = null; foreach($userContacts as $item){ $foundUserContact = $item; break; } if($foundUserContact){ $contacts = $foundUserContact['contacts']; $found = false; $foundIndex = null; foreach($contacts as $k=>$userId){ if($userId == $removedUserId){ $found = true; $foundIndex = $k; } } if($found){ array_splice($contacts,$foundIndex,1); if(count($contacts) == 0){ $contacts[] = (int)0; } $newdata = array('$set' => array("contacts" => $contacts)); $collection->update(array("rel_id" => (int)$id), $newdata, ['fsync'=>true]); } } } Добавлено спустя 15 минут 33 секунды: Самое интересное, что я сходил на обед, пришёл и всё стало записываться как надо через 1.5 часа. Но потом всё началось по новой. И я выяснил, что на локалхосте есть како-то невидимый кеш для монги. Может на удалённом хосте такого не будет.