旧バージョンのmongoドライバから2.xドライバへの更新中です。私が以前に持っていたいくつかのコードを更新しようとしていますが、どうやって調べるのか苦労しています。MongoDB C#ドライバ(v2.4)を使用したスライス(投影)派生クラスの配列
私たちのクラス構造は少し、このようなものです:
var result = collection
.Find(query)
.SetLimit(10)
.SetFields(Fields.Slice("Items", 0, 1));
そして、我々はこのようなコードを持って新しいものと::
私たちは、このようなコードを持っていた古いドライバでpublic class BaseClass
{
public string Name { get; set; }
}
public class DerivedClass : BaseClass
{
public IEnumerable<DataClass> Items { get; set; }
}
public class DataClass
{
public string Element1 { get; set; }
public string Element2 { get; set; }
}
var result = collection
.Find(query)
.Limit(10)
.Project<BaseClass>(...);
この場合、データはユーザーのコメントを表し、2つのタイプがあります。私たちのquery
オブジェクトは、ページングを処理するコードです。派生型の場合、Items配列の最初の要素だけを返したいとします。一致したコメントをすべて返す必要があります。
私が直面している問題は、Project
が静的に型指定されているため、Builders<BaseClass>.Projection.___
が必要であるということです。 IFindFluent<BaseClass, BaseClass>
にはAs<T>
オプションがありますが、予想される投影はProjectionDefinition<BaseClass, DerivedClass>
です。このような定義オブジェクトを作成する方法はわかりません.Mongoドライバを短く見ても、表示されません。
これを行う簡単な方法はありますか?
なぜ誰かがこれを落としたのかよく分かりません。古いMongoドライバーでは何かができなかったときに、新しいドライバーで突然それが可能になるとは本当に思いません。 – john