2012-09-08 37 views
5

Tôi đang sử dụng MongoDB cho đôi để thực hiện tất cả các loại chèn nhanh hay có như một khúc gỗ, nhưng tôi đang gặp một số khó khăn để có được một truy vấn thực sự đơn giảnLàm cách nào để lấy mục cuối cùng trong bộ sưu tập MongoDB?

thế nào, ở Mông Cổ, tôi sẽ làm gì để làm quen với T-SQL này

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

Nói cách khác, ngày cuối cùng trong bộ sưu tập là gì.

Tôi đang cố gắng sử dụng FindOne hoặc bất kỳ tài khoản nào khác có thể trả lại một tài liệu, nhưng không chấp nhận tài sản sortBy ... làm cách nào để thực hiện việc này?

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

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

Dòng cuối cùng ở trên sẽ hoàn hảo, nhưng phương pháp này chỉ chấp nhận tham số query.

+0

(1);) –

+0

vấn đề của tôi là sắp xếp, không có bao nhiêu sẽ được trả lại – balexandre

+0

Có bạn không thể sử dụng findOne với loại (tôi nghĩ) vì vậy, sử dụng tìm với 'giới hạn' để làm giống như một loại findOne –

Trả lời

8

Không có phương pháp .SetSortOrder()FindOneAs trong trình điều khiển C#. Điều này là do FindOneAs trả lại tài liệu trong khi .SetSortOrder() là thành viên của MongoCursor.

Truy vấn tương đương sẽ là một cái gì đó tương tự như:

hạn sử dụng
var query = Query.EQ("status", "pending"); 
var sortBy = SortBy.Descending("date"); 

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

Theo phiên bản 1.4 trình điều khiển C# hỗ trợ LINQ. Tôi nghĩ rằng một cái gì đó như thế này có thể giúp:

using MongoDB.Driver.Linq; 

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

Xin lưu ý AsQueryable() đầu tiên, đó là sự khởi đầu cần thiết của bạn để LINQ vào một bộ sưu tập Mongo. Thứ hai AsQueryable() là cần thiết bởi vì Nơi trả về IEnumerable, nhưng OrderByDescending() mất IQueryable.

+0

phiên bản hiện tại là 1.6.1 từ [GitHub] (https://github.com/mongodb/mongo-csharp-driver) – balexandre

+0

Tôi biết LINQ một phần (ghét nguyên nhân không hỗ trợ 'GroupBy') nhưng tôi luôn nhận được một ngoại lệ bất kể tôi làm gì, tôi đang dùng MongoHQ làm máy chủ mongoDB của tôi. – balexandre

Các vấn đề liên quan