【问题标题】:Dynamic fields indexing on nested documents with RavenDB使用 RavenDB 对嵌套文档进行动态字段索引
【发布时间】:2013-02-20 16:39:24
【问题描述】:

您将如何处理嵌套文档上的动态字段索引,以便您可以使用 RavenDB 查询深度图对象的动态字段?

使用文档中的示例:http://ravendb.net/docs/2.0/client-api/advanced/dynamic-fields

如果产品属性的值也是产品怎么办?考虑一个具有动态字段的 CMS,其中所有内容都是 content,根实体内容(对于 DDD 人员而言)可能嵌入另一个内容,等等(深度图)。

这非常重要,因为聚合子内容而不是与它们相关(就像您在关系数据库世界中所做的那样)是文档数据库的核心概念之一。

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    如果数据符合某种模式,比如分层数据,那么可以recurse into that data按照递归模式进行索引。

    您已经找到了index dynamic fields 的方法。您可以结合这些技术来获得最多可以描述的任何模式。

    如果数据是任意动态的(即您无法提前知道对象结构是什么),那么您将很难到达任何特定领域,因为您可以'不要描述如何访问它。

    您不能同时具有任意动态和完全可索引。

    【讨论】:

    • 感谢递归函数。我不确定它是否适用于我的场景。无论如何,我用另一种方法来解决我的问题,是的,我的问题是关于任意动态数据。我找到的解决方案是使用 RavenDB 自带的 HTTP API。
    • 使用 HTTP API 如何改变您的索引?
    • 好问题...答案是我不再存储 C# 类了。使用 HTTP API,我可以生成(在运行时 - 之前不知道此结构)一个定义明确的结构(JSON 对象),表示嵌套在我的 C# 模型中的名称/值集合(如引用的产品示例)中的数据。
    • 如果你愿意,我认为你仍然可以在 c# 中使用 dynamicExpandoObject 来做到这一点。 http api 有时会变得笨拙。我不想仅仅为此抛弃 c# 客户端。
    • 这也是我一开始坚持的,但不,我不能。动态对象或 ExpandoObject 无助于在运行时构建数据结构。您不能迭代嵌套的名称/值集合并在运行时构建动态对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2019-12-30
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多