MongoDB和Doctrine。如何在数组中搜索文本?

时间:2014-12-23 14:05:58

标签: php mongodb symfony doctrine-orm

一些mongo文档User包含嵌入文档Message的数组,其中有一些sting成员'text':

/**
 * @MongoDB\EmbeddedDocument
 */
class Message {
     /**
     * @MongoDB\Field(type="string")
     */
    protected $text;
}

/**
 * @MongoDB\Document(collection="chats")
 * @JMS\ExclusionPolicy("none")
 */
class User {
     /**
     * @MongoDB\EmbedMany(targetDocument=myBundle\Document\Message", strategy="addToSet")
     */
    protected $messages = array();

}

如何搜索某些子字符串中datbaase中所有用户的messages.text?因此,如果某个用户有“Hello Bob!”消息,则可以通过搜索“Bob”来找到该消息。

1 个答案:

答案 0 :(得分:1)

您尝试过类似的事情吗?

$product = $this->get('doctrine_mongodb')
    ->getManager()
    ->createQueryBuilder('YourOwnBundle:User')
    ->field('messages.text')->equals(new \MongoRegex('Bob'))
;

如果您想在此类请求中进行一些演出,请记住使用全文索引!