【问题标题】:Load only part of Ravendb document array item仅加载 Ravendb 文档数组项的一部分
【发布时间】:2013-08-11 05:19:55
【问题描述】:

让我们想象一下具有这样本地化的文档:

{  
    "Id":"product/1",  
    "CategoryId":"categories/1",  
    "Translations":[  
        { "Lang": "en", "Title:"en title"},  
        { "Lang": "hr", "Title:"hr title"}
    ]
} 

如果我查询索引 CategoryId:"categories/1" AND Lang:"en",我想从 Raven 的投影/展平/过滤结果中获得如下所示:

{  
    "Id":"product/1",
    "CategoryId":"categories/1",  
    "Lang":"en",  
    "Title":"en title"
}

所以基本上,文档包含数组中的本地化字符串,我只想获得一种语言。在客户端过滤不是问题,但是如何在 raven 服务器上使用 Transformer 进行过滤?

或者,您能否推荐一些其他文档结构来存储本地化内容?目前,我有单独的文档 Product 和 ProductTranslation(针对每种语言),但希望将它们全部放在一个文档下(看起来更 OO:/)

【问题讨论】:

    标签: .net ravendb


    【解决方案1】:

    如果产品之间的唯一区别是翻译,我会选择不同的模型。产品文档将包含 categoryId、价格和所有其他产品信息。

    假设产品保存在products/1 下,您可以将其他文档保存在products/1/enproducts/1/es 等ID 下,并将翻译后的字符串存储在那里。然后,您可以使用 ResultTransformers 将翻译后的字符串注入到查询的最终结果中。

    【讨论】:

    • 嗯,听起来很有趣! c#模型会是什么样子?我试图将 Product 作为聚合根,并将翻译作为其中的值对象。这可以实现吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多