CHỈNH SỬA:Kể từ phiên bản 2.0.1 của trình điều khiển, FindFluent
đối tượng được trả về từ IMongoCollection.Find
có ToString
thích hợp bao gồm bộ lọc, nhưng cũng có một phép chiếu, sắp xếp, v.v. (nếu có liên quan).
Vì vậy, cho điều này:
var findFluent = collection.
Find(x => hashValues.Contains(x.UrlHash) && x.ProductTopic == topicId,
new FindOptions {MaxTime = TimeSpan.FromSeconds(1)}).
Project(x => x.UrlHash).
Sort(Builders<ProductMapping>.Sort.Descending(x => x.ProductTopic)).
Skip(6).
Limit(7);
Console.WriteLine(findFluent);
Đầu ra sẽ là:
find({ "UrlHash" : { "$in" : [4, 5, 6, 7, 8] }, "ProductTopic" : 200 }, { "UrlHash" : 1, "_id" : 0 }).
sort({ "ProductTopic" : -1 }).
skip(6).
limit(7).
maxTime(1000)
Chà, bạn đã biết mình đang thực hiện một tìm kiếm nên tôi giả sử bạn muốn biết truy vấn trông như thế nào.
Bạn có thể dễ dàng làm điều đó trực tiếp từ mã của mình bằng cách sử dụng IFindFluent.Filter
:
BsonDocument filterDocument = findFluent.Filter.Render(
collection.DocumentSerializer,
collection.Settings.SerializerRegistry);
Console.WriteLine(filterDocument);
Đầu ra trong trường hợp của bạn (phụ thuộc vào hashValues
và topicId
tất nhiên):
{ "UrlHash" : { "$in" : [4, 5, 6, 7, 8, 9] }, "ProductTopic" : 200 }