2

我正在尝试使用点符号查询嵌入的文档——这里有一些例子:

http://www.mongodb.org/display/DOCS/Dot+Notation+(Reaching+into+Objects)

由于我挂断了 DQL/QueryBuilder API,我只想通过 Doctrine 传递原始查询。我似乎无法在 Symfony2 的构造中弄清楚这一点。我可以确定的唯一代码是:

$dm = $this->get('doctrine.odm.mongodb.document_manager');
$dm->getSchemaManager()->ensureIndexes();
$repo = $dm->getRepository('MyBundle:MyDocument');
$qb = $repo->createQueryBuilder();

// insert magic here

$query = $qb->getQuery();
$result = $query->execute();

以下是点符号的工作原理:

$dm = $this->get('doctrine.odm.mongodb.document_manager');
$dm->getSchemaManager()->ensureIndexes();
$repo = $dm->getRepository('MyBundle:MyDocument');
$qb = $repo->createQueryBuilder();

$qb
    ->field('embedded_document_field.field1')->equals(1)
    ->field('embedded_document_field.field2')->equals('foo')
;

$query = $qb->getQuery();
$result = $query->execute();
4

1 回答 1

0

这个问题很古老,但如果有人遇到它,使用查询生成器执行此操作相当简单:

    $qb = $this->createQueryBuilder();
    $qb->addOr($qb->expr()->field('embedded.embedded2.username')->equals($username));
    $qb->addOr($qb->expr()->field('embedded.embedded3.username')->equals($username));
    $qb->addOr($qb->expr()->field('embedded.embedded4.username')->equals($username));
    $qb->field('status')->lt(10);
    $involved = $qb->getQuery()->execute();
    return $involved;

我承认这实际上并没有回答与通过 raw 相关的问题(这是我自己的问题),但它确实解决了您的问题。

于 2015-11-25T00:43:42.587 回答