mongodb c# select 特定字段
mongodb c# select specific field
需要一些帮助来创建一个通用方法来按名称选择字段。
像这样:
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)
谢谢!!
您接下来可以做的事情:
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);
需要一些帮助来创建一个通用方法来按名称选择字段。
像这样:
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)
谢谢!!
您接下来可以做的事情:
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);