我正在尝试使用Ruby Mongo Driver在Mongodb集合中按NUUID值进行搜索,但没有任何结果。我可以按其他字段成功搜索,但是这些字段不足以满足我的需求。我怀疑这个问题与UUID到NUUID的格式化和转换有关。
我尝试通过以下方式传递ID:
作为字符串
使用BSON :: Binary.new作为二进制数据
使用BSON :: Binary.new作为二进制数据,并指定类型(:uuid,:uuid_old)
将其从十六进制转换为base64之后
手动将其从大端/小端切换为
将其从大字节序/小字节序手动切换并从十六进制转换为案例64后
这些策略的许多组合。
我已经注意到,转换字节序后,ID看起来像我在通过名称搜索返回的json文档中看到的值,但是我仍然无法通过该ID进行搜索。
def format (uuid)
uuid = uuid.tr('-', '');
a = uuid[6..7] + uuid[4..5] + uuid[2..3] + uuid[0..1]
b = uuid[10..11] + uuid[8..9]
c = uuid[14..15] + uuid[12..13]
d = uuid[16..31]
hex = a + b + c + d
end
mgdb[:MyCollection].find(:_id == BSON::Binary.new([[format('NUUID_VALUE_SHOWN_IN_ROBO_3T')].pack('H*')].pack('m0'), :uuid_old)).first