2012-09-08 12 views
5

私は速い挿入やログとして持つことのすべての並べ替えを実行するためにいつかのためにMongoDBを使用していますが、私は本当に単純なクエリを取得するにはいくつかの問題を抱えているモンゴで、私がやるだろうか、MongoDBコレクションの最後のアイテムを取得するにはどうすればよいですか?

この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パラメータを受け付けます。

+0

使用限界(1);) –

+0

私の問題はソートではなく、どのように多くは – balexandre

+0

はい、あなたが(ソートとfindOneを使用することはできませんが返されます私は思う)findOneソートのようにするには 'limit'を使って見つけてください –

答えて

8

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

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

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

return collectionLog.FindAs<BsonDocument>(query).SetSortOrder(sortby).SetLimit(1); 
2

バージョン1.4以降、C#ドライバはLINQをサポートしています。最初AsQueryable()に注意してください

using MongoDB.Driver.Linq; 

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

、それはMongoのコレクションにLINQにごneccessaryスタートです:私はこのような何かが役立つかもしれないと思います。 2番目のAsQueryable()が必要です。なぜなら、IEnumerableを返しますが、OrderByDescending()はIQueryableを取ります。

+0

現在のバージョンは1.6.1です[GitHub](https://github.com/mongodb/mongo-csharp-driver) – balexandre

+0

私はLinqを知っています私はmongoHQをmongoDBホストとして使用しています。 – balexandre

関連する問題