5

私はMongoDBを使用して、あらゆる種類の高速挿入を実行したり、ログとして記録したりしていますが、本当に単純なクエリを取得するのに問題があります

Mongo で、この T-SQL に似たものを得るにはどうすればよいでしょうか

SELECT TOP 1 [date] FROM [Collection] ORDER BY [date] desc

つまり、コレクションの最後の日付です。

FindOneまたは 1 つのドキュメントを返すことができる他のものを使用しようとしていますが、sortByプロパティを受け入れるものはありません...どうすればよいですか?

var query = Query.EQ("status", "pending");
var sortBy = SortBy.Descending("date");

return collectionLog.FindOneAs<BsonDocument>(query, sortBy);

上記の最後の行は完璧ですが、このメソッドはqueryパラメーターのみを受け入れます。

4

2 に答える 2

8

C# ドライバーには.SetSortOrder()メソッドはありません。FindOneAsこれは、が のメンバであるFindOneAs間にドキュメントを返すためです。.SetSortOrder()MongoCursor

同等のクエリは次のようになります。

var query = Query.EQ("status", "pending");
var sortBy = SortBy.Descending("date");

return collectionLog.FindAs<BsonDocument>(query).SetSortOrder(sortby).SetLimit(1);
于 2012-09-10T05:02:50.573 に答える
2

バージョン 1.4 に従って、C# ドライバーは LINQ をサポートします。このようなものが役立つと思います:

using MongoDB.Driver.Linq;

return collectionLog.AsQueryable().Where(l => l.status == "pending").AsQueryable().OrderByDescending(l => l.date);

最初の に注意してくださいAsQueryable()。これは、Mongo コレクションへの LINQ に必要な開始点です。AsQueryable()Where は IEnumerable を返しOrderByDescending()ますが、IQueryable を使用するため、2 番目が必要です。

于 2012-09-08T20:11:56.880 に答える