我有一些使用 10Gen 驱动程序从 MongoDB 读取的坐标。我遇到的问题是多维数据的深度不一致,我正在寻找一种综合策略来处理这个问题。
解决方案必须能够以与读出(反序列化)相同的顺序和深度将坐标写回 MongoDB(序列化)。
两个不同深度的例子:
示例 1
[
[ [ [ 12, 33 ], [ 32, 23 ], [ 12, 32], [23, 12 ], [ 32, 32 ], [ 32, 2 ] ] ],
[ [ [35, 12 ], [ 53, 16 ], [ 22, 54 ], [ 2, 32 ], [ 32, 32 ] ] ]
]
反序列化为:
public List<List<List<int>>> coordinates { get; set; }
示例 2
[
[ [ 2, 2 ], [120,12 ], [ 32,32 ], [ 32, 2 ], [ 3,2 ], [ 2, 3 ], [ 2, 1 ] ]
]
反序列化为:
public List<List<List<List<int>>>> coordinates { get; set; }
我最初的想法是编写一个自定义序列化程序来读取数据并计算深度,然后使用包装器方法从视图中隐藏实际数据,例如 GetNextCoordinate(),然后函数 GetNextCoordinate 可以从适当的结构中提取数据。感觉很乱,所以我正在寻找更通用的解决方案。
假设坐标属性是具体类的一部分,并且 MongoDB 中的集合包含两种类型的坐标文档的混合。这意味着对 MongoDB 的任何给定查询都将提取一种或两种类型的坐标文档,而在执行查询之前我不知道。