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 + "' }"

带单引号。

虽然我没能在任何地方找到这个文档。但它使我的集成​​测试 运行 所以 :)