dongnong3019 2012-11-24 13:20
浏览 107
已采纳

在MongoDB文档中嵌入许多字符串?

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!

  • 写回答

2条回答 默认 最新

  • drl92080 2012-11-25 15:31
    关注

    Doctrine MongoDB ODM calls the mapping type for arrays "Hash", which is a little confusing. Your class would look like this:

    namespace Acme\ExampleBundle\Document;
    use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
    
    /** @MongoDB\Document */
    class MyDocument {
    
        // ...
    
        /** @MongoDB\Hash */
        protected $tags = array();
    }
    

    Flushing to MongoDB should result in an hash stored inside your collection as you described in your question.

    For further reference, have a look at the HashType implementation

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。