指定返回文档
概述
在本指南中,您可以学习如何通过将以下方法链接到Find()
方法
示例数据
本指南中的示例使用来自 Atlas 示例数据集 的 sample_restaurants
数据库中的 restaurants
集合。要了解如何创建免费的 MongoDB Atlas 集群并加载示例数据集,请参阅 Atlas 入门 指南。
本页上的示例使用以下 Restaurant
类作为集合中文档的模型
[ ]public class Restaurant { public ObjectId Id { get; set; } [ ] public string Name { get; set; } [ ] public string Cuisine { get; set; } }
Limit
要指定从读取操作返回的文档的最大数量,请使用由 IFindFluent
接口提供的 Limit()
方法。在调用 Find()
方法后,链式调用 Limit()
方法以修改操作的行为。
以下示例查找所有具有 cuisine
字段值为 "Italian"
的餐厅,并将结果限制为 5
个文档
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Limit(5).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
V & T Restaurant Mimis Restaurant & Bar Venice Restaurant Areo Restaurant Tre Giovani Pizza & Pasta
提示
前面的示例根据数据库中的 自然顺序 返回与查询匹配的前五个文档。以下部分将描述如何按指定顺序返回文档。
排序
要按指定顺序返回文档,请使用由 IFindFluent
接口提供的 Sort()
方法。在调用 Find()
方法后,链式调用 Sort()
方法以修改操作的行为。
调用 Sort()
时,必须传递排序定义作为参数。您可以使用 Builders<T>.Sort.Ascending()
方法按从低到高的顺序排序值,或使用 Builders<T>.Sort.Descending()
方法按从高到低的顺序排序值。这两个方法都接受要排序的字段名作为参数。这些方法可以链式调用以按多个字段排序返回的文档。
以下示例返回所有具有 cuisine
字段值为 "Italian"
的文档,并按 name
字段值的升序排序
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Sort(sort).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
(Lewis Drug Store) Locanda Vini E Olii 101 Restaurant And Bar 44 Sw Ristorante & Bar 900 Park A Voce ...
跳过
要跳过指定数量的文档以返回查询结果,请使用由 IFindFluent
接口提供的 Skip()
方法。在调用 Find()
方法后,链式调用 Skip()
方法以修改操作的行为。
以下示例返回所有具有 cuisine
字段值为 "Italian"
的文档,并跳过前 10
个文档
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Trattoria Alba Da Umberto Restaurant La Strada Restaurant Pasta Lovers Trattoria Nanni Restaurant Villa Mosconi Restaurant Villa Berulia Marco Polo Ristorante Cafe Luna Baraonda
合并限制、排序和跳过
可以将 Limit()
、Sort()
和 Skip()
方法链接到单个 Find()
方法调用中。这允许您设置从读取操作返回的排序文档的最大数量,并在返回之前跳过指定数量的文档。
以下示例返回具有 cuisine
值为 "意大利菜"
的 5
个文档。结果按 name
字段值的升序排序,跳过前 10
个文档。
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Limit(10).Sort(sort).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Acqua Acqua Restaurant Acqua Santa Acquista Trattoria Acquolina Catering Adriatic Restaurant Pizzeria Bar Adrienne'S Pizza Bar Ai Fiori Aita Restaurant Al Di La
注意
调用这些方法的顺序不会改变返回的文档。.NET/C# 驱动程序会自动重新排序调用以首先执行排序操作,然后是跳过操作,最后是限制操作。
更多信息
有关检索文档的更多信息,请参阅检索数据指南。
有关指定查询的更多信息,请参阅指定查询指南。
API 文档
要了解更多关于本指南中讨论的任何方法或类型,请参阅以下 API 文档