ravendb - Ravendb 索引 JSON 参考问题
问题描述
我们最近从 Raven DB 3.5.9 迁移到 5.1.2。我们有集合字段,其中包含类似的文档
{
"$id": "1",
"FieldName": "FName",
"Rules": [
{
"$id": "2",
"VariantId": "0ad608a6-d489-4e73-b5de-63803fae7ad5",
"CoveredPlanTypes": [
"ABC",
"DEF"
]
"Formatters": [],
"Transformations": [
{
"$id": "3",
"ConditionExpression": {
"$id": "4",
"SubType": "ConditionCombination",
"Name": "AND",
"Type": "ConditionComputation"
},
"Variants": {
"$id": "20"
}
},
{
"$id": "21",
"ConditionExpression": {
"$id": "22",
"SubType": "ConditionCombination",
"Name": "AND",
"Type": "ConditionComputation"
},
"Variants": {
"$id": "41"
}
}
]
},
{
"$id": "557",
"VariantId": "8299a037-2e38-4480-bad9-cf9137786876",
"CoveredPlanTypes": [
"ABC"
],
"Formatters": [],
"Transformations": [
{
"$ref": "3"
},
{
"$ref": "21"
},
{
"$id": "558",
"ConditionExpression": {
"$id": "559",
"SubType": "ConditionCombination",
"Name": "AND",
"Type": "ConditionComputation"
},
"Variants": {
"$id": "611"
}
}
]
}
],
"CreatedOnInstant": "2020-12-16T21:58:49.2241825Z",
"@metadata": {
"@collection": "Fields",
"Raven-Clr-Type": "Domain.Field.Field, Domain",
}
}
我们有以下索引类
public class Field_RuleVariantsByPlanType : AbstractIndexCreationTask<Field, Rule>
{
public Field_RuleVariantsByPlanType()
{
Map = fields => from field in fields
from ruleVariant in field.Rules
from planType in ruleVariant.CoveredPlanTypes.DefaultIfEmpty("")
select new Rule
{
Id = field.Id,
FieldName = field.FieldName,
CoveredPlanType = planType,
Formatters = ruleVariant.Formatters,
Transformations = ruleVariant.Transformations,
};
StoreAllFields(FieldStorage.Yes);
}
}
当我们尝试这样做时var rule = await _session.Query<Rule, Field_RuleVariantsByPlanType>().Where(x => x.Id == "fields/7809").ProjectInto<Rule>().ToListAsync();
,我们没有解析第二条规则中加载的转换的引用,它们出现为 null 即"Transformations": [ { "$ref": "3" }, { "$ref": "21" }
,好像我们检查var rule = await _session.LoadAsync<Field>("fields/7809");
json 中的引用已解析,这次我们在第二条规则中获得了正确的 3 个转换。请帮忙
解决方案
推荐阅读
- java - 在下一个活动中创建列表之前,在加载屏幕中显示一个计数器(计算列表项)
- chisel - 值不是 chisel3.Bundle 的成员
- java - 重新创建 youtube 可拖动布局
- visual-studio-code - vscode 扩展图标路径
- python - 使用 apply 函数进行字符串操作
- c++ - 我可以使用 C++ 在另一个应用程序中运行命令吗?
- ios - 如何重置 UITextView 高度
- python-3.x - 如何计算 Python 中嵌套列表的平均数量?
- ios - 在 iOS 上,没有 Apple Watch,如何收集 totalEnergyBurned 进行锻炼?
- c# - 为什么用 new 关键字初始化列表而不是简单地声明它们?