首页 > 解决方案 > 将许多字段传递到聚合管道中的下一阶段

问题描述

请让我知道以下 MongoDB 查询的 C# 等效项。它在 Robo3T for MongoDB 中运行良好

db.UserProfile.aggregate([          
    {
      $project: {
         SName:1,
         FName:1,
         DemRole: {
            $filter: {
               input: "$DemRole",
               as: "item",
               cond: { $eq: [ "$$item.Name", "FO" ] }
            }
         }
      }
   }
])

标签: c#mongodbaggregation-framework

解决方案


我可以通过下面的 C# 代码来实现这一点

var stage1 = "{ $project: { SName: 1, FName: 1, DemRole: { $filter: { input: '$DemRole', as: 'item', cond: { $eq: ['$$item._id', '5bc49241f12541c3aaa098ee'  ] } } } } }";


                var query = collection.Aggregate(new AggregateOptions() { AllowDiskUse = true })

                            .AppendStage<BsonDocument>(stage1).ToEnumerable();



                return query?.Select(point => BsonSerializer.Deserialize<RetUserProfile4Role>(point)).ToList();

推荐阅读