Для получения одного документа применяются методы First()/FirstAsync()
, Single()/SingleAsync()
,
FirstOrDefault()/FirstOrDefaultAsync()
, SingleOrDefault()/SingleOrDefaultAsync()
.
При этом, если выборка не содержит документов, то методы First()/FirstAsync()/Single()/SingleAsync()
генерируют исключение,
а FirstOrDefault()/FirstOrDefaultAsync()/SingleOrDefault()/SingleOrDefaultAsync()
возвращают значение по умолчанию.
Например, получим один документ
using MongoDB.Bson; using MongoDB.Driver; MongoClient client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("test"); var collection = db.GetCollection<BsonDocument>("users"); // получаем первый документ var user = await collection.Find("{}").FirstAsync(); Console.WriteLine(user33); // получаем первый документ, у которого Age = 33 var user33 = await collection.Find(new BsonDocument("Age",33)).FirstAsync(); Console.WriteLine(user33);
Метод Skip() пропускает при выборке определенное количество документов. Например, пропустим 3 первых документа:
using MongoDB.Bson; using MongoDB.Driver; MongoClient client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("test"); var collection = db.GetCollection<BsonDocument>("users"); // пропускаем 3 первых документа var users = await collection.Find("{}").Skip(3).ToListAsync(); foreach (var user in users) Console.WriteLine(user);
метод Limit() устанавливает максимальное количество документов, которое можно получить. Например, получим первые три документа:
using MongoDB.Bson; using MongoDB.Driver; MongoClient client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("test"); var collection = db.GetCollection<BsonDocument>("users"); // выбираем 3 первых документа var users = await collection.Find("{}").Limit(3).ToListAsync(); foreach (var user in users) Console.WriteLine(user);
Если необходимо извлечь документы с конца коллекции, то перед извлечением можно провести сортировку:
var users = await collection.Find("{}") .Sort("{_id:-1}") // сортировка по убыванию по полю _id .Limit(3) // извлекаем последние 3 документа .ToListAsync();
Комбинация методов Skip()
и Limit()
позволяет извлечь определенную часть коллекции. Например, получим с 3-го по 5 документы:
var users = await collection.Find("{}") .Skip(2) // пропускаем 2 документа .Limit(3) // извлекаем следующие 3 документа .ToListAsync();