0

10Gen ドライバーを使用して MongoDB から読み取っている座標がいくつかあります。私が直面している問題は、多次元データの深さが一貫していないことであり、問​​題を処理するための包括的な戦略を探しています。

ソリューションは、読み取った (逆シリアル化された) ときと同じ順序と深さで座標を MongoDB に書き戻す (シリアル化する) ことができる必要があります。

異なる深さの 2 つの例:

例 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; }

私の最初の考えは、データを読み取って深さを把握するカスタムシリアライザーを作成し、ラッパーメソッドを使用してビューから実際のデータを非表示にすることでした。それは面倒なので、より一般的な解決策を探しています。

座標プロパティが具象クラスの一部であり、MongoDB のコレクションに両方のタイプの座標ドキュメントが混在しているとします。つまり、MongoDB への特定のクエリは、座標ドキュメントのいずれかまたは両方のタイプをプルし、クエリを実行する前にはわかりません。

4

2 に答える 2

0

最終的に、変数のネストされた配列をサポートするカスタム BSON シリアライザー/デシリアライザーを作成しました。

于 2013-08-05T12:37:00.917 に答える