RawBsonDocument作为查询结果

时间:2016-05-24 16:12:31

标签: c# mongodb mongodb-query aggregation-framework

我遇到了一个问题,我想在服务器和客户端之间进行中间步骤。所以我不想在服务器上序列化结果(例如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中获得结果。当我开始应用GroupProject等运算符时,它会强制我将结果作为BsonDocument示例2 )。如何将结果作为RawBsonDocument或只是字节?

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但我不认为这是可能的:

  

采用投影的高级API将始终采用前者。这是因为,在确定如何处理投影客户端时,仅知道将发生哪些字段和转换是不够的。它还要求我们知道如何将投影形状解释为.NET类型。由于驱动程序允许您使用自定义类,因此任何投影都必须包含用于投影到自定义类的“解释说明”。

http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/definitions/