仅加载Ravendb文档数组项的一部分

时间:2013-08-10 15:16:53

标签: .net ravendb

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

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

如果我查询索引 CategoryId:“categories / 1”AND Lang:“en”

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

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

或者,您能否建议一些其他文档结构来存储本地化内容?目前,我有单独的文件Product和ProductTranslation(适用于所有语言),但希望将其全部放在一个doc下(看起来更多OO:/)

1 个答案:

答案 0 :(得分:1)

如果产品之间的唯一区别是翻译,我会选择不同的型号。产品文档将具有categoryId,price和产品信息的所有其余部分。

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