JSON 号码“2L”无效。片键被序列化为数字但定义为字符串?
Invalid JSON number '2L'. shard key being serialized to number but defined as string?
异常:
System.FormatException: Invalid JSON number '2L'.
at MongoDB.Bson.IO.JsonScanner.GetNumberToken(JsonBuffer buffer, Int32 firstChar)
at MongoDB.Bson.IO.JsonScanner.GetNextToken(JsonBuffer buffer)
at MongoDB.Bson.IO.JsonReader.PopToken()
at MongoDB.Bson.IO.JsonReader.ReadBsonType()
at MongoDB.Bson.Serialization.Serializers.BsonDocumentSerializer.DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args)
分片键定义,是构造函数创建的组合键;
public string ShardKey { get; set; }
查询代码:
public virtual async Task<ICollection<City>>(City city)
{
string shardKey = city.CityNumber + city.ShortName;
return await MongoDb.CitiesCollection.Aggregate().Match({
"{ 'Time': { $elemMatch: { $eq: 0 } }," + " ShardKey: " + shardKey + " }")
.ToListAsync();
}
为什么会失败?
包装包含数字的值,如:
" ShardKey: '" + shardKey + "' }"
带单引号。
虽然我没能在任何地方找到这个文档。但它使我的集成测试 运行 所以 :)
异常:
System.FormatException: Invalid JSON number '2L'.
at MongoDB.Bson.IO.JsonScanner.GetNumberToken(JsonBuffer buffer, Int32 firstChar)
at MongoDB.Bson.IO.JsonScanner.GetNextToken(JsonBuffer buffer)
at MongoDB.Bson.IO.JsonReader.PopToken()
at MongoDB.Bson.IO.JsonReader.ReadBsonType()
at MongoDB.Bson.Serialization.Serializers.BsonDocumentSerializer.DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args)
分片键定义,是构造函数创建的组合键;
public string ShardKey { get; set; }
查询代码:
public virtual async Task<ICollection<City>>(City city)
{
string shardKey = city.CityNumber + city.ShortName;
return await MongoDb.CitiesCollection.Aggregate().Match({
"{ 'Time': { $elemMatch: { $eq: 0 } }," + " ShardKey: " + shardKey + " }")
.ToListAsync();
}
为什么会失败?
包装包含数字的值,如:
" ShardKey: '" + shardKey + "' }"
带单引号。
虽然我没能在任何地方找到这个文档。但它使我的集成测试 运行 所以 :)