我有以下文件:使用Doctrine的MongoDB ODM - 如何通過嵌入文檔的字段查找文檔?
- 一個
User
文件。 - 嵌入文檔,包含一參考(見下一文件)
- 一個
Site
文檔
每個用戶都有嵌入文檔的陣列內,每個代表他如下的項目 - 站點,微博賬戶 - 可以選擇標記他感興趣的特定類別。每個嵌入文檔都有對第三個文檔的引用 - Site
文檔(或Twitter
文檔等)。
的問題是 - 使用MongoDB的ODM,我怎麼能得到所有選擇跟隨一個給定的網站,利用該網站的ID用戶的文件?
(見下文(文件後),它是如何在MongoDB的外殼完成)
user.php的
<?php
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\Document
*/
class User {
/**
* @ODM\Id
* @var string
*/
protected $id;
/**
* @ODM\EmbedMany(
* discriminatorMap={
* "site"="SiteFollow",
* "twitter"="TwitterFollow",
* }
* )
* @var ArrayCollection;
*/
protected $follows;
}
SiteFollow.php
<?php
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\EmbeddedDocument
*/
class SiteFollow {
/**
* @ODM\Collection
* @var array
*/
protected $interestingCategories;
/**
* @ODM\ReferenceOne(targetDocument="Site", simple=true)
* @var Site
*/
protected $siteItem;
}
網站。 PHP
<?php
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\Document
*/
class Site {
/**
* @ODM\Id
* @var string
*/
protected $id;
/**
* @ODM\String
* @var string
*/
protected $name;
/**
* @ODM\String
* @var string
*/
protected $url;
}
在蒙戈外殼用戶文檔的示例:
db.User.find({"follows.siteItem": ObjectId("OBJECT_ID_OF_SITE_DOCUMENT")})
這是否幫助你:http://www.phpntips.com/mongodb-mysql-with-doctrine-2-example-of-listener-to-maintain-redundant -data-alternative-to-joins-2012-12/ – Gigala 2013-04-19 07:09:54
試試這個:'$ builder-> Field('following。siteItem') - > getQuery() - > execute();' – 2013-04-29 11:19:08