diff --git a/lib/Doctrine/ODM/MongoDB/Hydrator.php b/lib/Doctrine/ODM/MongoDB/Hydrator.php index 2d526127b0..6dd8502424 100644 --- a/lib/Doctrine/ODM/MongoDB/Hydrator.php +++ b/lib/Doctrine/ODM/MongoDB/Hydrator.php @@ -104,6 +104,8 @@ public function hydrate($document, &$data) // Set the document identifier if (isset($data['_id'])) { $metadata->setIdentifierValue($document, $data['_id']); + $data[$metadata->identifier] = $data['_id']; + unset($data['_id']); } return $document; } diff --git a/lib/Doctrine/ODM/MongoDB/UnitOfWork.php b/lib/Doctrine/ODM/MongoDB/UnitOfWork.php index 0a9603d656..f621a0aed1 100644 --- a/lib/Doctrine/ODM/MongoDB/UnitOfWork.php +++ b/lib/Doctrine/ODM/MongoDB/UnitOfWork.php @@ -385,8 +385,7 @@ public function computeChangeSet(Mapping\ClassMetadata $class, $document) $coll->setDirty( ! $coll->isEmpty()); $class->reflFields[$name]->setValue($document, $coll); $actualData[$name] = $coll; - } - if ($class->isCollectionValuedEmbed($name) && $actualData[$name] !== null + } elseif ($class->isCollectionValuedEmbed($name) && $actualData[$name] !== null && ! ($actualData[$name] instanceof Collection)) { // If $actualData[$name] is not a Collection then use an ArrayCollection. if ( ! $actualData[$name] instanceof Collection) {