mongodb php odm,php – 使用Doctrine的MongoDB ODM – 如何通过嵌入文档的字段查找文档?...

我有以下文件:

>用户文档.

>嵌入式文档,包含对(参见下一文档)的引用

>站点文档

每个用户都有一系列嵌入式文档,每个用户都代表他所遵循的项目 – 一个站点,一个Twitter帐户 – 可以选择标记他感兴趣的特定类别.每个嵌入式文档都引用第三个文档 – 站点文档(或Twitter文件等.).

问题是 – 使用MongoDB ODM,如何使用该站点的ID获取选择关注给定站点的所有用户的文档?

(见下文(在文件之后)如何在mongodb shell中完成)

user.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

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;

}

Site.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;

}

mongo shell中用户文档的示例:

db.User.findOne()

{

"_id": ObjectId("123"),

"follows": [

{

"interestingCategories": [

"PHP"

]

"siteItem" : ObjectId("OBJECT_ID_OF_SITE_DOCUMENT"),

"_doctrine_class_name" : "site"

}

]

}

Mongo shell命令用于获取跟踪特定站点的所有用户:

db.User.find({"follows.siteItem": ObjectId("OBJECT_ID_OF_SITE_DOCUMENT")})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值