在mongodb投影时如何保留原始文档?

时间:2017-04-18 09:25:17

标签: c# mongodb linq aggregation-framework database

我想使用mongodb的AggregationFramework和C#驱动程序来创建一个长聚合管道。

不幸的是,我在尝试维护管道中的原始记录时遇到了一个奇怪的错误。

使用下面的代码,我得到:

var entry = battleLogs.Aggregate()
            .Project(x => new
            {
                Record = x, // Code works when this line is commented out
                CSum = x.Player1.Score + x.Player2.Score,
                ...
            })
            .First();

我收到此错误:

System.NotSupportedException: "$project or $group does not support {document}."

我在管道中计算了许多其他属性,我需要保留我正在使用的原始记录/文档。

我尝试将文档的每个成员复制到匿名对象的新成员中(使用相同的名称)。

这样可行,但是文档(BattleLog)有很多字段,因此手动将每个字段复制到一个新的匿名对象中会产生大量的工作,并且当只需要一些属性时会不必要地污染范围。时间。

为什么会发生错误,我该怎么办才能阻止它?

编辑: 我正在寻找的等价物是本机mongodb脚本中的$addFields函数。 我需要做的是将所有字段添加到我想要保留的匿名对象中,但是根文档中的许多字段都要多,所以我希望将原始文档保留在聚合管道中。

也许使用dynamic类型有一些技巧?

0 个答案:

没有答案