[英]How can I read just one field in MongoDB C#?
我试图从给定 ID 的 MongoDB 中只读取一个字段,但它给了我所有的对象......我该怎么做? 我应该怎么办? 我尝试使用此存储库,但它返回了我所有的对象
这是我的课:
public class Hall
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string Name { get; set; }
public List<string> Surveys { get; set; }
}
这是我与 Mongo 连接的存储库:
public Task<List<Hall>> ReadSurveysHall(string hallId)
{
var filter = Builders<Hall>.Filter.(x => x.Id, hallId);
return _mongoManager.Find(filter, MongoConstants.HallCollection);
}
我只是希望它只给我调查字符串的列表。 先感谢您。
为了只返回调查列表,您可以像这样更改您的方法:
public async Task<List<string>> ReadSurveysHall(string hallId)
{
var filter = Builders<Hall>.Filter.(x => x.Id, hallId);
var halls = await _mongoManager.Find(filter, MongoConstants.HallCollection);
var hall = halls.FirstOrDefault();
if (hall == null)
return new List<string>();
return hall.Surveys;
}
您可以通过使用投影进一步优化这一点,以便 MongoDB 仅提供您感兴趣的数据,例如:
var projection = Builders<Hall>.Projection.Exclude(x => x.Id).Include(x => x.Surveys);
var options = new FindOptions<Hall, Hall>()
{
Projection = projection,
};
如何使用该投影取决于_mongoManager
的功能。 查看Find
方法并检查其中任何一个是否接受投影或某种FindOptions
作为参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.