-
Type:
New Feature
-
Resolution: Fixed
-
Priority:
Unknown
-
Affects Version/s: None
-
Component/s: Doctrine
-
None
-
🔵 Done
-
PHP Drivers
-
Not Needed
-
-
None
-
None
-
None
-
None
-
None
-
None
https://github.com/doctrine/mongodb-odm/issues/2825
When passing an embedded document, it must be encoded.
Â
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM; #[ODM\EmbeddedDocument()] class Embedded { Â public function __construct( Â Â Â Â #[ODM\Field(type: 'string')] Â Â Â Â #[ODM\Index()] Â Â Â Â private string $name, } } #[ODM\Document()] class MainDocument { Â Â #[ODM\EmbedOne(targetDocument: Embedded::class)] Â Â Â Â private Embedded $embedded; }
Â
In MainDocumentRepository:
    $qb = $this->createQueryBuilder();     $qb->updateMany()       ->field('embedded.name')->equals($embedded->getName())       ->field('embedded')->set($embedded)       ->getQuery()       ->execute();
updateMany() accepts to set EmbeddedDocument, and stores the full document {{
{ "name": "value" }}} in the target field.