【发布时间】:2012-11-24 13:20:59
【问题描述】:
我需要在我的文档中有一个简单的字符串数组/集合,但无法通过 Doctrine ODM 找到实现这一目标的方法。
这是一个示例类/文档,$tags 需要是一个简单的字符串数组:
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();
}
我尝试了不同的方法,例如 @MongoDB\EmbedMany 或 @MongoDB\EmbedMany(targetDocument="String") 我知道最后一个没有理由起作用,但我只是在尝试任何我能想到的方法。
在 Mongo DB 中作为 JSON 的最终结果就像这样简单:
{
"_id": ObjectId("a0afa410caeea70de1000000"),
"name": "Example Name",
"tags": ["tag1", "example", "test tag"]
}
我需要帮助的是,如何使用 @MongoDB\EmbedMany 注释来允许我只将字符串添加到集合中,然后将其保存到数据库时看起来像上面的 JSON。
我希望有人可以提供帮助,因为我现在真的很困惑。感觉应该就是这么简单!
【问题讨论】:
-
如果最后一个应该是 JSON,那么数组将是 [ ] 而不是 {} - 后者是单个嵌入式文档,这不是合法的语法。
-
感谢您发现 Asya。我现在已经编辑了问题。
-
我认为您必须为子文档的数据验证定义一个新模型,然后将该模型作为 embedMany 附加到其父模型中。
标签: php mongodb symfony doctrine-odm doctrine-mongodb