我遇到了一个问题,我想在服务器和客户端之间进行中间步骤。所以我不想在服务器上序列化结果(例如query.ToList
)。因此,我希望查询结果为RawBsonDocument
,因此我只有原始字节而不是序列化为BsonDocument
的数据。
我目前正在使用Mongo C#驱动程序,但在创建查询时,我没有太多运气将结果作为原始字节。
示例1(RawBsonDocument
- 确定)
IAggregateFluent<RawBsonDocument> query = collection.Aggregate()
.Sort(Builders<BsonDocument>.Sort.Descending("StartTime"))
.Match(categoryFilter)
示例2(RawBsonDocument
- 失败)
IAggregateFluent<RawBsonDocument> query = collection.Aggregate()
.Sort(Builders<BsonDocument>.Sort.Descending("StartTime"))
.Match(categoryFilter)
.Project(new BsonDocument(new Dictionary<string, object>
{
{"Measurement.Time", "$Entities._time"},
{"Measurement.Value", "$Entities.mes"}
}))
在示例1 中,我可以在RawBsonDocument
中获得结果。当我开始应用Group
或Project
等运算符时,它会强制我将结果作为BsonDocument
(示例2 )。如何将结果作为RawBsonDocument
或只是字节?
答案 0 :(得分:0)
如果我错了,请纠正我,但我不认为这是可能的:
采用投影的高级API将始终采用前者。这是因为,在确定如何处理投影客户端时,仅知道将发生哪些字段和转换是不够的。它还要求我们知道如何将投影形状解释为.NET类型。由于驱动程序允许您使用自定义类,因此任何投影都必须包含用于投影到自定义类的“解释说明”。
http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/definitions/