Doctrine MongoDB-使用Doctrine MongoDB Aggregation Builder进行构面内的水合结果

时间:2018-11-28 14:33:35

标签: php mongodb doctrine-odm doctrine-mongodb

我有以下查询,我希望第一个结果被水合。这是我尝试过的:

$builder = $dm->createAggregationBuilder(\Documents\Jobs::class);
$builder
    ->facet()
        ->field('carpenterJobs')
        ->pipeline(
            $dm->createAggregationBuilder(\Documents\Jobs::class)
                ->hydrate($this->getEntityName(\Documents\Jobs::class))
                ->match()
                ->field('name')
                ->equals('carpenter');
        )
        ->field('cleanerJobs')
        ->pipeline(
            $dm->createAggregationBuilder(\Documents\Jobs::class)
                ->match()
                ->field('name')
                ->equals('cleaner');
        )
;

但是当我执行此操作时,结果并没有水合。以下是Jobs实体:

/**
 * @QueryResultDocument
 * @Document(repositoryClass="...")
 */
class Jobs
{
    /**
     * @Id
     */
    private $id;

    /**
     * @Field(type="string")
     * @Index(unique=true, order="asc")
     */
    private $name;

    ...
}

我也尝试对$builder进行水合处理,但返回错误消息Undefined index: _id。自己执行“ carpenterJobs”查询,而不用在水龙头里,我可以返回水合结果。

0 个答案:

没有答案