首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原则2 MongoDb ODM参考资料

原则2 MongoDb ODM参考资料
EN

Stack Overflow用户
提问于 2012-01-17 20:59:36
回答 1查看 1.5K关注 0票数 0

我有一个与php中的Doctrine 2 MongoDB ODM相关的问题。

因此,我有一个EntityA,在EntityA中,我想通过EntityBObjectId引用EntityB。因此,在E 110EntityAE 211中,我有一个E 112变量AE 213和下面的Docblock: EntityA“true”)E 215。

问题是,当我称其为setMethod时,它将整个EntityB设置为EntityA,而不仅仅是objectId,这正是我想要做的。

基本上,EntityA看起来是这样的:

代码语言:javascript
复制
ENTITYA {
    randomFieldA,
    randomFieldB,
    EntityB ObjectId
}       

有人知道我想要的东西是否像我尝试过的那样有可能吗?还是有人知道更好的方法?

基本上就像这个例子:

代码语言:javascript
复制
/** @Document */
class TopCategory 
{

    /** @EmbedMany(targetDocument="SubCategory") */
    private $subCategories;

}

/** @EmbeddedDocument */
class SubCategory 
{

    /** @ReferenceOne(targetDocument="Product") */
    private $product;

}


/** @Document */
class Product
{

    /** @id */
    private $id;

    /** @String */
    private $name;

}

现在如何在subCategory->product中只存储产品的id而不是整个产品

EN

回答 1

Stack Overflow用户

发布于 2012-01-17 23:56:16

ODM就是这样工作的。在对象端,将整个Product添加到SubCategory中。

您的Mongo数据库将只存储引用,例如(在Subcategory项目中)

代码语言:javascript
复制
"product": {
    "$ref": "Product",
    "$id": ObjectId("4b0552b0f0da7d1eb6f126a1")
}

要创建这种关系,只需将Product设置为SubCategory,例如

代码语言:javascript
复制
// $product is a persisted Product object
$subcategory->setProduct($product);

要从Product获得SubCategory ID,只需使用

代码语言:javascript
复制
$productId = $subcategory->getProduct()->getId();

(假设定义了适当的setter和getter方法)

当您希望创建与独立文档的关系时,可以使用引用。如果您可能希望从许多其他文档(如SubCategories)链接到一个文档(如您的产品),则尤其如此。

当您只希望将该文档作为其父文档的一部分时,将使用嵌入式文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8901673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档