首页 文章

mongodb c#选择特定字段

提问于
浏览
2

需要一些帮助来创建一个通用的方法来按名称选择字段 .

这样的事情:

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

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

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 回答

  • 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);
    

相关问题