Actualización: Con la nueva versión del controlador (1.6 +) puede evitar los nombres de campo difíciles de codificación y utilizar LINQ lugar:
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields<T>.Include(e => e.Id, e => e.Name));
Puede hacerlo a través de SetFields
método del cursor mongodb:
var users = usersCollection.FindAllAs<T>()
.SetFields("_id") // include only _id
.ToList();
Por defecto SetFileds
incluyen campos especificados. Si necesita excluir ciertos campos que se pueden utilizar:
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields.Exclude("_id")) // exclude _id field
.ToList();
O puede usar juntos:
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields.Exclude("_id") // exclude _id field
.Include("name")) // include name field
.ToList();
Pero el método Project solo filtra el resultado en la memoria. Se está recuperando todo el documento del servidor. Esto es malo si el documento es grande. Debe haber alguna otra llamada API en el controlador C# que hace que la consulta obtenga solo campos específicos. –
@YaronLevi No, 'Project' ** no ** solo filtra en la memoria. ** Es ** la API que obtiene solo campos específicos. – i3arnon
¿Requiere este método que la clase se registre (es decir, 'BsonClassMap.RegisterClassMap ...')? –
MoonKnight