c# - ChangeStreamDocument.ClusterTime 总是抛出 FormatException
问题描述
我在 Windows 7 上使用net461/netstandard2.0
dll 中的 MongoDB.Driver 2.7.0 针对社区服务器 4.0.2 的本地安装并配置了单个副本集。
我正在收听集合上的更改流,但是当我只是尝试访问ClusterTime
结果的属性时,ChangeStreamDocument
它会引发异常:
private static DateTime? GetTimeStamp(ChangeStreamDocument<T> csd)
{
try
{
var clusterTime = csd.ClusterTime; // BOOM
return clusterTime.ToNullableUniversalTime();
}
catch
{
return null;
}
}
System.FormatException
HResult=0x80131537
Message=Cannot deserialize a 'BsonDocument' from BsonType 'Timestamp'.
Source=MongoDB.Bson
StackTrace:
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.EnsureBsonTypeEquals(IBsonReader reader, BsonType bsonType)
at MongoDB.Bson.Serialization.Serializers.BsonValueSerializerBase`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonSerializationInfo.DeserializeValue(BsonValue value)
at MongoDB.Bson.Serialization.BsonDocumentBackedClass.GetValue[T](String memberName, T defaultValue)
at Foo.GetTimeStamp(ChangeStreamDocument`1 csd) in Foo.cs:line 28
查看支持文件,clusterTime
确实是Timestamp
:
{
"_id": {
"_data": "825B9102E30000000129295A1004BFB7B7E0A5F648929251FC06F06640A2463C5F6964003C62366332623361352D313965352D343162392D386336322D396565313130393337666634000004"
},
"operationType": "insert",
"clusterTime": Timestamp(1536230115, 1),
// ... omitted
}
这是错误/已知问题还是我的设置有问题?
解决方案
这已被 MongoDB 确认为一个错误。
推荐阅读
- php - 使用 php 和 html 使用多种颜色使表格行变得丰富多彩
- ruby - Rspec 失败,因为日期格式不正确
- python - 接收来自客户端的请求时出错:SSLHandshakeFailed: SSLHandshakeFailed
- java - 使用 Scanner 读取不同类型的变量
- django - 芹菜发送任务但不执行它们
- regex - 匹配注释和 first_line_of_entry 的正则表达式
- mysql - 选择至少有一个空值的行
- java - 当循环在 main 中运行时,如何实现一个单独的线程来评估用户输入?
- javascript - 根据另一个数组对数组进行排序
- python-3.x - 重叠两个 GridLayout