ClientとPVの 2 つのドキュメントがあります。1 つのClientで多数の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全体ではなく、参照されたすべてのPVに対して、MongoIdsを持つ親ドキュメントだけを取得するにはどうすればよいですか? (MongoDBdb.Client.find({name: 'Test'})
では、ドキュメントではなくMongoIdを取得しました)。Doctrine MongoDB hydrator に関連していますか?