I need to have a simple array/collection of strings in my Document, but cannot work out a way to acheive this with Doctrine ODM.
This is an example class/document, with $tags
needing to be a simple array of strings:
namespace Acme\ExampleBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/** @MongoDB\Document */
class MyDocument {
/** @MongoDB\Id */
protected $id;
/** @MongoDB\String */
protected $name;
/** @MongoDB\EmbedMany */
protected $tags = array();
}
I've tried different things like @MongoDB\EmbedMany
or @MongoDB\EmbedMany(targetDocument="String")
I know there is no reason for the last one to work, but I was just trying anything I could think of.
The end result in the Mongo DB as JSON is as simple as this:
{
"_id": ObjectId("a0afa410caeea70de1000000"),
"name": "Example Name",
"tags": ["tag1", "example", "test tag"]
}
What I need help with is, how to have the @MongoDB\EmbedMany annotation to allow me to add only strings into the Collection, which will then look like the above JSON when persisted to the DB.
I hope someone can help, as I'm really stuck with this now. It feels like it should be so simple!