Ответ состоит из двух частей:
Во-первых, реализация LINQ в версии 1.4 драйвера C # не пытается ограничить поля, возвращаемые сервером.Весь документ всегда возвращается, даже если проекция позже использует только его часть.Мы планируем оптимизировать это в будущих выпусках, но это не так просто, как кажется.
Во-вторых, вы на самом деле не используете запрос LINQ, по крайней мере, не запрос LINQ to MongoDB.Когда ваш код написан, вы извлекаете всю коллекцию клиенту (это то, что делает FindAll), а затем используете выбор локально по полученным значениям.Подобный LINQ-запрос к MongoDB был бы написан так:
var query = from y in collection.AsQueryable<MyClass>()
select new { y.Name, y.LastModified };
foreach (var result in query)
{
// process result
}