【问题标题】:Child objects in MongoDBMongoDB 中的子对象
【发布时间】:2011-02-05 23:30:07
【问题描述】:

我一直在关注 Rob Conery 的 Linq for MongoDB 并遇到了一个问题。在示例中,他展示了如何轻松嵌套子对象。对于我目前的实验,我有以下结构。

class Content
{
    ...
    Profile Profile { get; set; }
}

class Profile
{
    ...
}

这在查看内容项时非常有用。我现在面临的困境是我是否想将 Profile 视为一个原子对象。就目前而言,似乎我无法直接查询 Profile 对象,但它与 Content 结果打包在一起。如果我希望它具有包容性,但也能够仅查询 Profile 我觉得我的第一直觉是让 Profiles 成为顶级对象,然后在 Content 类下创建一个类似结构的外键,将两者联系在一起。

对我来说,感觉就像我在使用 RDBMS 实践,并且感觉我很可能违背了 Mongo 的精神。您将如何处理需要独立操作但又希望作为另一个对象的子对象的对象?

【问题讨论】:

    标签: c# mongodb linq nosql


    【解决方案1】:

    没有过多关注 Rob 的内容,只是在这里大声思考。难道你不能有一个内容对象可以获取的配置文件提供程序对象,并且有一些方法可以获取你正在寻找的配置文件的实例。

    这将有利于您正在寻找的组合而不是父/子关系。

    再次,在这里大声思考,但我会让内容对象具有 IProfileProvider 类型的依赖项,并且我会在需要时将该提供程序注入到内容对象中。这将允许我将 Content 类型与 Profile 类型组合在一起,而不是明确地具有父/子关系

    【讨论】:

      【解决方案2】:

      我已决定将配置文件非规范化为仅包含内容下的不可变配置文件属性的“较小”配置文件将是一个更好的解决方案。这最大限度地减少了我将要进行的读取,同时允许我在必要时查找实际的配置文件对象以收集有关配置文件的更深入的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 2018-02-21
        • 2017-05-21
        • 1970-01-01
        相关资源
        最近更新 更多