当使用 PipelineStageDefinitionBuilder 为聚合管道创建投影阶段时,它似乎总是忽略Id数据集中的任何值。我在 .Net Core 应用程序中使用 Mongo .Net 驱动程序 2.8。以下是复制步骤。
在 Aggregate() 上使用 IAggregateFluent 语法时,相同的投影有效,但我需要使用构面构建器。当针对聚合运行构建器时,它也可以工作,但是在 a 中facet它无法绑定任何Id值。
只是带有 id 的空类用于测试(添加类型以显示法线映射工作):
public class DatabaseModel
{
public Guid Id { get; set; }
public string Type { get; set; }
}
public class ProjectionClass
{
public Guid Id { get; set; }
public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我使用下面的内容创建投影时,它成功生成查询,但是在所有返回的模型中,Id 值设置为 null。该查询似乎有一个 Id_ : 0 值,但在正常聚合中似乎也产生了相同的值,所以我认为这不相关?
var typeFilter = Builders<DatabaseModel>.Filter.Eq(x => x.Type, "Full");
var aggregationPipeline …Run Code Online (Sandbox Code Playgroud)