我正在构建一个UI,其中一次显示一组对象。每个对象都有孩子,每个孩子都有自己的孩子。每个实体都有时间序列数据。
我有一个代表时间的滑块。当我移动滑块时,您会看到对象A,B,C等及其随时间变化的值。如果选择对象A,则将看到其子项,并且可以滑动相同的滑块并查看子项超时的数据。因此,您可以将洋葱去皮,并继续从父母到孩子到其他孩子之间进行挖掘。
以下是可以完成此操作的示例Mongo模式:
{Time1: [{ Object_Name: A,
Data: 10,
Children: [{
Object_Name: AA,
Data: 4,
Children: [etc, etc]
},
{
Object_Name: AB,
Data: 100
Children: [etc, etc]
}
},
{ Object_Name: B,
Data: 10,
Children: [{
Object_Name: BA,
Data: 11,
Children: [etc, etc]
},
{
Object_Name: BB,
Data: 15
Children: [etc, etc]
}
}, .... }
Time2: [{ Object_Name: A,
Data: 199,
Children: [{
Object_Name: AA,
Data: 44,
Children: [etc, etc]
},
{
Object_Name: AB,
Data: 1002
Children: [etc, etc]
}
},
{ Object_Name: B,
Data: 107,
Children: [{
Object_Name: BA,
Data: 12,
Children: [etc, etc]
},
{
Object_Name: BB,
Data: 150
Children: [etc, etc]
}
}, .... }
],
etc, etc
}}
对于任何时间值,我都可以提取对象及其子对象的整个JSON,并仅在前端显示使用该JSON。我也可以进行增量查询。 (例如,我可以首先通过仅在特定时间获取父对象的数据来显示父对象。然后,如果用户单击父对象,则可以在同一时间戳下从Mongo提取子对象的值,因为我知道哪个父对象这样,我不必一次为所有孩子提取所有数据。)
我担心的是,这可能不是组织数据的最有效方法。例如,当这些数据的规模变大时,我不应该为特定的时间戳加载整个json。同样,我也不认为嵌套查询是最有效的。
对于为概念上“嵌套”并逐层检索的数据设计模式是否存在黄金法则?