我有以下文件:使用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