使用mongodb C#驱动程序生成地图投影结果

使用mongodb C#驱动程序生成地图投影结果,c#,.net,mongodb,mongodb-.net-driver,map-projections,C#,.net,Mongodb,Mongodb .net Driver,Map Projections,我需要将集合中的一些文档映射到简化文档。 我可以在mongo shell中获得我需要的: db.getCollection('items').aggregate([ { "$project": { "Team": "$TeamId", "Marker": "$Properties.marker.Value" }} ]) 我需要使用C#驱动程序(版本2.3.0)获得相同的结果;我试过这个 var aggregation = m_database.GetCollection<

我需要将集合中的一些文档映射到简化文档。 我可以在mongo shell中获得我需要的:

db.getCollection('items').aggregate([
{ "$project": {
    "Team": "$TeamId",
    "Marker": "$Properties.marker.Value"
}}
])
我需要使用C#驱动程序(版本2.3.0)获得相同的结果;我试过这个

var aggregation = m_database.GetCollection<BsonDocument>("items").Aggregate();
var projectionDefinition = new BsonDocument("$project", new BsonDocument
            {
                { "Team", "$TeamId"},
                { "Marker", "$Properties.marker.Value" }
            });

 var query = aggregation.Project(projectionDefinition);
 var result = await query.ToListAsync();
var aggregation=m_database.GetCollection(“items”).Aggregate();
var projectionDefinition=新的BsonDocument($project),新的BsonDocument
{
{“Team”,“$TeamId”},
{“Marker”,“$Properties.Marker.Value”}
});
var query=aggregation.Project(projectionDefinition);
var result=wait query.ToListAsync();
但是我得到了以下错误

命令聚合失败:$project的顶级不允许使用表达式


有人知道发生了什么事吗?

如果你打电话给
Project
你的bson中已经有
$Project
, 因此,您只需简化ProjectOnDefinition:

var projectionDefinition = new BsonDocument
        {
            { "Team", "$TeamId"},
            { "Marker", "$Properties.marker.Value" }
        };

我个人的意见是:我会避免使用纯bson,MongoDB驱动程序为您提供了使用c#dto类的可能性。

谢谢!我复制了一些将我引向错误方向的代码。我同意关于避免纯bson的建议(这是我通常做的,但在这种情况下,有理由认为纯bson对我更可行)