【发布时间】:2013-10-11 03:19:09
【问题描述】:
我知道 MongoDb C# 驱动程序不支持投影,所以我搜索了一下,发现很多人使用 mongoCursor 来执行此类查询,我试图仅选择特定字段,我的代码如下:
public T GetSingle<T>(Expression<Func<T, bool>> criteria,params Expression<Func<T, object>>[] fields) where T : class
{
Collection = GetCollection<T>();
return Collection.FindAs<T>(Query<T>.Where(criteria)).SetFields(Fields<T>.Include(fields)).SetLimit(1).SingleOrDefault();
}
除此之外,我还为用户定制了存储库:
public User GetByEmail(string mail, params Expression<Func<User, object>>[] fields)
{
return GetSingle<User>(x=>x.Email==mail,fields);
}
这是用法:
_repository.GetByEmail(email, x=>x.Id,x=>x.DisplayName,x=>x.ProfilePicture)
但是我得到了包含在参数中的字段,还有属于 User 类的所有枚举、日期和布尔值,作为字符串且未包含在字段列表中的值是 null,所以很好
我能做些什么来避免这种情况?
【问题讨论】:
标签: mongodb mongodb-.net-driver mongodb-query