使用mongodb C#驱动程序映射投影结果

时间:2017-03-23 10:53:32

标签: 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<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();

但是我收到以下错误

  

命令聚合失败:$ project

的顶层不允许使用$表达式

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

1 个答案:

答案 0 :(得分:2)

如果你打电话给Project,你的bson中已经有$project,  所以你只需简化你的投影定义:

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

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