Mongodb 如果没有他引用的文档,我如何只获取文档

Mongodb 如果没有他引用的文档,我如何只获取文档,mongodb,symfony,doctrine-odm,doctrine-mongodb,Mongodb,Symfony,Doctrine Odm,Doctrine Mongodb,我有两个文档:Client和PV。许多PV在一个客户端中引用。它是单向的 客户端 /** * @MongoDB\Document */ class Client { /** * @MongoDB\Id(strategy="auto") */ protected $id; /** * @MongoDB\String */ protected $name; /** * @MongoDB\Referenc

我有两个文档:ClientPV。许多PV在一个客户端中引用。它是单向的

客户端

/**
 * @MongoDB\Document
 */
class Client
{
    /**
     * @MongoDB\Id(strategy="auto")
     */
    protected $id;

    /**
     * @MongoDB\String
     */
    protected $name;

    /**
     * @MongoDB\ReferenceMany(targetDocument="PV", simple=true, cascade={"persist", "remove"})
     */
    private $PV = array();

    public function __construct()
    {
        $this->PV = new \Doctrine\Common\Collections\ArrayCollection();
    }
}
PV

/**
 * @MongoDB\Document
 */
class PV
{
    /**
     * @MongoDB\Id(strategy="auto")
     */
    protected $id;

    /**
     * @MongoDB\String
     */
    protected $name;
}
要获取我使用的客户端文档,请执行以下操作:

$client = $this->get('doctrine_mongodb')
->getRepository('HubMainBundle:Client')
->findOneById($id);
我得到:

"53da113176a2955c6d8b4567": {
    "id": "53da113176a2955c6d8b4567",
    "name": "Test",
    "_p_v": [
        {
            "id": "53da121276a2956c708b4568",
            "name": "test pv"
        },
        {
            "id": "53da4e2876a295b7088b4567",
            "name": "pv 2"
        }
    ]
}
但我想:

"53da113176a2955c6d8b4567": {
    "id": "53da113176a2955c6d8b4567",
    "name": "Test",
    "_p_v" : [ 
        "53da121276a2956c708b4568", 
        "53da4e2876a295b7088b4567"
    ]
}
那么,我如何才能只获取每个引用PV而不是entires引用PV的Mongoid父文档呢?(在MongoDB中,当我执行
db.Client.find({name:'Test'})
时,我得到的是MongoID,而不是文档)。
它与MongoDB水合器相关吗?

hmn它应该只返回引用PV的$MongoId,您可以使用$client->getPV()延迟加载它,谢谢您的评论。但是我不明白为什么
return$client->getPV()
获取所有PV,而不是其中的$mongoid。它不是懒散的,它是完全负荷的。