我将Guid
转换为BinData
时遇到了麻烦。我知道您可以使用BsonIdAttribute
映射属性,但在我的情况下,我实际上需要使用我的Guid
标识符的filter子句以JSON格式编写查询。
像:
mongoClient.UpdateMany(
new JsonFilterDefinition<UserUnreadCounter>($"{{ \"Counters.EntityId\": {{ $eq: '{myGuid.ConvertToBinData()}' }} }}"),
new JsonUpdateDefinition<UserUnreadCounter>("{ $inc: { \"Counters.$.Count\": 1 } }"));
我该如何转换它?它只是裁剪Guid
的十六进制表示的前24个符号吗?
答案 0 :(得分:1)
我该如何转换它?它只是裁剪十六进制的前24个符号 Guid的代表?
不完全是。实际上,Guid字节(由MongoDB.Bson.GuidConverter.ToBytes(guid, GuidRepresentation.CSharpLegacy)
返回)转换为Base64字符串。以下是执行此类转换的C#代码:
var str = Convert.ToBase64String(MongoDB.Bson.GuidConverter.ToBytes(guid, GuidRepresentation.CSharpLegacy));
例如,对于Guid {a6f262e1-2b58-4c90-89f2-f12c4fad19b1}
,它会生成4WLyplgrkEyJ8vEsT60ZsQ==
。