Mongo C#驱动程序中的设置字段
我使用的是C#mongo驱动程序,我的用户集合如下所示Mongo C#驱动程序中的设置字段,c#,mongodb,mongodb-.net-driver,mongodb-query,C#,Mongodb,Mongodb .net Driver,Mongodb Query,我使用的是C#mongo驱动程序,我的用户集合如下所示 public class User { public string Name { get; set; } public DateField Date { get; set; } /* * Some more properties */ public List<string> Slugs { get; set; } //I just need to return this
public class User
{
public string Name { get; set; }
public DateField Date { get; set; }
/*
* Some more properties
*/
public List<string> Slugs { get; set; } //I just need to return this property
}
公共类用户
{
公共字符串名称{get;set;}
公共日期字段日期{get;set;}
/*
*更多属性
*/
公共列表slug{get;set;}//我只需要返回这个属性
}
我正在编写一个查询,其中它只返回slugs属性。
为此,我尝试使用mongo驱动程序中的SetFields(…)
方法。SetFields返回用户
类型的游标我希望某个属性属于我的slug
属性类型,这样当我只需要一个属性时就不会返回整个属性集。
可能吗?是和否。您可以使用聚合框架来更改数据结构,但出于两个原因,我不会这样做:
毕竟,省略几个字段已经是一个微观优化(将索引覆盖的查询放在一边),但在客户端,空字段的成本应该几乎为零。在这里,我并没有改变数据的结构,只是想要数据的一个子集,但我看到c#mongo驱动程序返回类类型的cusor中的SetFields。这会增加它的性能吗?我不确定你在说什么。
SetFields
不会改变返回类型,并且未填充的字段并不特别昂贵。我在问题中提到了我对set fieldsWell的期望,就像我写的,SetFields
不会更改类型,您的期望是错误的。您可以使用LINQ to Objects'Select(p=>p.Slugs)
将返回一个IEnumerable
,但请注意,IEnumerable
上的操作可能比MongoCursor上的操作慢得多(例如,Count()
:扩展方法IEnumerable
将对整个结果集进行反序列化,而MongoCursor
将简单地向数据库询问计数)。