我需要将简化文档映射到集合中的某些文档。 我可以在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
的顶层不允许使用$表达式
有人知道发生了什么事吗?
答案 0 :(得分:2)
如果你打电话给Project
,你的bson中已经有$project
,
所以你只需简化你的投影定义:
var projectionDefinition = new BsonDocument
{
{ "Team", "$TeamId"},
{ "Marker", "$Properties.marker.Value" }
};
我的个人观点:我会避免使用纯粹的bson,MongoDB驱动程序为您提供了使用c#dto类的可能性。