mongodb c#选择特定字段

时间:2015-06-30 16:28:00

标签: c# mongodb mongodb-.net-driver mongodb-csharp-2.0

需要一些帮助来创建通用方法,以便按名称选择字段。

类似的东西:

T GetDocField<T>(string doc_Id, string fieldName)

我得到的最好的是使用投影,它给我的文档只有想要的字段:

 public T GetDocField<T>(string Doc_Id, string fieldName)
 {
    var value = DocCollection.Find(d => d.Id == Doc_Id)
               .Project<T>(Builders<Doc>.Projection
               .Include(new StringFieldDefinition<Doc>
               (fieldName))).FirstOrDefaultAsync().Result;

注意:的 我使用新的c#驱动程序(2.0)

谢谢!

1 个答案:

答案 0 :(得分:6)

你可以做下一个:

public async Task<TValue> GetFieldValue<TEntity, TValue>(string id, Expression<Func<TEntity, TValue>> fieldExpression) where TEntity : IEntity
{
    var propertyValue = await collection
        .Find(d => d.Id == id)
        .Project(new ProjectionDefinitionBuilder<TEntity>().Expression(fieldExpression))
        .FirstOrDefaultAsync();

    return propertyValue;
}

并将其命名为

var value = await GetFieldValue<Item, string>("111", x => x.Name);