3

MongoDB のフィールドのサブセットを取得する方法をインターネット全体で検索し、C# の公式ドライバーを使用して (ただし、基本アーキテクチャとして LinQ を使用)、MongoDB シェルでこれを行う方法を見つけました。

// selecting only "field" of a collection
db.collection.find( { field : 'value' }, { field: 1 } ); 

次に、C# LinQ チュートリアルでSelect、これと同等のメソッドを見つけました。

collection.AsQueryable<T>().Select(x => new { x.field });

ただし、チュートリアルでは、このメソッドは「一致するドキュメントから新しい結果タイプを投影するために使用されます」と述べています。

このメソッドが結果全体ではなくフィールドのサブセットのみを取得し、サブセットのみを新しいオブジェクトに選択するようにするにはどうすればよいですか?

ドライバーは、結果を取得する前にクエリ コマンドを作成しますか?

4

2 に答える 2

4

現在、ドライバーはフィールドのサブセットを取得していません。その機能が必要な場合は、手動で行う必要があります。この機能のチケットはhttps://jira.mongodb.org/browse/CSHARP-456にあります。これが必要な場合は、フィードバックを残すか、投票してください。

于 2012-07-17T00:42:22.643 に答える
1

これは不正行為です...しかし:

//This actual implementation is untested and may contain small errors.
//The helper method has been tested and *should* work.

public static IMongoQuery GetMongoQuery<T>(this IQueryable<T> query)
{
    return ((MongoQueryable<T>)query).GetMongoQuery();
}

var temp =
    from x in DB.Foo.AsQueryable<Test>()
    where x.SomeField > 5;
    select (x.OtherField);

return temp.GetMongoQuery().ToJson();
于 2012-07-17T00:32:35.377 に答える