La méthode MongoDB LinQ «Select» ne récupérera vraiment qu’un sous-ensemble de champs?

En recherchant sur Internet comment récupérer un sous-ensemble de champs dans MongoDB, en utilisant le pilote officiel C # (mais en utilisant LinQ comme architecture de base), j’ai trouvé comment procéder dans un shell MongoDB.

// selecting only "field" of a collection db.collection.find( { field : 'value' }, { field: 1 } ); 

Ensuite, j’ai trouvé dans C # LinQ Tutorial la méthode Select , qui est équivalente à ceci:

 collection.AsQueryable().Select(x => new { x.field }); 

Cependant, le didacticiel indique que la méthode ” est utilisée pour projeter un nouveau type de résultat à partir des documents correspondants “.

Comment faire en sorte que cette méthode ne récupère que le sous-ensemble de champs et non l’ensemble du résultat, puis sélectionne uniquement le sous-ensemble dans un nouvel object?

Le pilote construira-t-il la commande de requête avant de récupérer les résultats?

Le pilote ne récupère actuellement aucun sous-ensemble des champs. Si vous avez besoin de cette fonctionnalité, vous devrez le faire manuellement. Le ticket pour cette fonctionnalité est ici: https://jira.mongodb.org/browse/CSHARP-456 . N’hésitez pas à laisser des commentaires ou à voter si vous en avez besoin.

C’est de la sortingche … mais:

 //This actual implementation is untested and may contain small errors. //The helper method has been tested and *should* work. public static IMongoQuery GetMongoQuery(this IQueryable query) { return ((MongoQueryable)query).GetMongoQuery(); } var temp = from x in DB.Foo.AsQueryable() where x.SomeField > 5; select (x.OtherField); return temp.GetMongoQuery().ToJson();