【问题标题】:RawBsonDocument as a query resultRawBsonDocument 作为查询结果
【发布时间】:2016-05-24 16:12:30
【问题描述】:

我遇到了一个问题,我希望在服务器和客户端之间有一个中间步骤。所以我不想在服务器上序列化结果(例如query.ToList)。因此,我希望查询结果为RawBsonDocument,所以我只有原始字节,而不是将数据序列化为BsonDocument

我目前正在使用 Mongo C# 驱动程序,但我在创建查询时无法将结果作为原始字节获得。

示例 1 (RawBsonDocument - OK)

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 或只是字节的结果?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      相关资源
      最近更新 更多