![](/img/trans.png)
[英]How to select documents by field range of values in MongoDB C# driver?
[英]How to get values of one field in array in MongoDB Driver for C#
我有課程:
public class Whole
{
public ObjectId Id { get; set; }
public string NeededField { get; set; }
public List<Detail> Details { get; set; }
public string SomeUnnecesaryField { get; set; }
}
public class Detail
{
public string NeededField { get; set; }
public string NotNeededField { get; set; }
}
[BsonNoId]
[BsonIgnoreExtraElements]
public class MyNeededInformations
{
public string NeededField { get; set; }
[BsonElement("Details.NeededField")]
public List<string> DetailsNeededFields { get; set; }
}
我試圖通過投影來獲得它:
var filter = someFilter;
var projection = Builders<Whole>.Projection
.Include(w => w.NeededField)
.Include(w => w.Details)
.Exclude("_id");
return Collection
.Find(filter)
.Project(projection)
.As<MyNeededInformations>()
.ToList();
而且我每次都會收到DetailsNeededFields
作為空列表。 我想要像標准聚合一樣的字符串列表:
db.collection.aggregate([
{$match: someFilter},
{$project: {"_id": 0, "NeededField": 1, "DetailsNeededFields": "$Details.NeededField"}}
])
可以使用AsQueryable
接口輕松實現,如下所示:
var results = await collection
.AsQueryable()
.Where(_ => true)
.Select(w => new MyNeededInformations
{
NeededField = w.NeededField,
DetailsNeededFields = (List<string>)w.Details.Select(d => d.NeededField)
})
.ToListAsync();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.