gpt4 book ai didi

c# - MongoDb:用ruby插入UUID后,c#无法将其转换为GUID

转载 作者:可可西里 更新时间:2023-11-01 09:47:09 25 4
gpt4 key购买 nike

我正在尝试使用 ruby​​ 将一个对象插入到 mongoDB 中,并使用 c# 和 NoRM 驱动程序检索它。

在我想在我的 c# 对象中使用 Guid 之前,一切似乎都进展顺利。

在将它插入 mongo 之前,我使用以下代码在 ruby​​ 中设置了一个 UUID(正如这篇博文 http://blog.mikeobrien.net/2010/08/working-with-guids-in-mongodb-with-ruby.html 所建议的):

BSON::Binary.new("d7b73eed91c549bfaa9ea3973aa97c7b", BSON::Binary::SUBTYPE_UUID)

在 C# 中检索此对象时出现异常“GUID 的字节数组必须恰好为 16 个字节长。”被抛出。

我使用管理 shell 检查了对象的内容。 guid 属性已设置为

BinData(3,"ZDdiNzNlZWQ5MWM1NDliZmFhOWVhMzk3M2FhOTdjN2I=")

但是,如果我使用 c# 插入相同的 Guid,则 guid 属性设置为

BinData(3,"7T6318WRv0mqnqOXOql8ew==")

知道我做错了什么吗?

最佳答案

我认为博客示例是错误的。在我看来,您希望 guid 是一个十六进制字符串,即以“\xd7”(一个字节)而不是“d7”开头

我试过这个:

guidpack=guid.scan(/../).map {|e| e.to_i(16)}.pack('c*')

并检查了 Base64 编码的大小,现在看起来是正确的。

Base64.encode64 BSON::Binary.new(guidpack, BSON::Binary::SUBTYPE_UUID).to_s
=> "17c+7ZHFSb+qnqOXOql8ew==\n"

但结果与您在上面使用 C# 时发生的情况并不完全匹配,因此这可能根本不是正确的答案。 (我没有用 mongo 等测试,只是 bson gem,所以不能检查抱歉)

关于c# - MongoDb:用ruby插入UUID后,c#无法将其转换为GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6643970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com