您能指导我如何使C#等效
db.UserProfile.aggregate([
{$match:{_id:"sen"}},
{
$project: {
DemRole: {
$filter: {
input: "$DemRole",
as: "item",
cond: { $eq: [ "$$item.Name", "CO" ] }
}
}
}
}
])
我试图选择一个与_id匹配的文档并在对嵌入式文档应用过滤器后检索结果。它在Robo3T的MongoDB中运行良好。但是我无法在C#中翻译相同的内容。
答案 0 :(得分:1)
这应该可以帮助您:
var collection = new MongoClient().GetDatabase("test").GetCollection<User>("UserProfile");
var pipeline = collection.Aggregate()
.Match(up => up.Id == "sen")
.Project(up => new { DemRole = up.DemRole.Where(c => c.Name == "CO") });
答案 1 :(得分:0)
感谢您的回答。它现在可以在C#中工作。但是下面是我如何获取信息的方法。
var pipeline = collection.Aggregate()
.Match(up => up.UserID == userId)
.Project(up => new { DemRole = up.DemRole.Where(c => c.Status== true) }).ToList();
// .Project(dem => dem.DemRole.Where(c => c.Status == true));//.ToList();
foreach(var pipe in pipeline)
{
return pipe.DemRole.ToList();
}
我想知道下面的代码执行的操作
.Project(up => new { DemRole = up.DemRole.Where(c => c.Status== true) })
以及下面的代码为何不起作用。
.Project(dem => dem.DemRole.Where(c => c.Status == true));//.ToList();
此外,我必须运行foreach才能获得如下所示的信息。
foreach(var pipe in pipeline)
{
return pipe.DemRole.ToList();
}
如果您能解释以上内容或为我提供一些我可以阅读的文档,那会更好。