如何使用Ruby Mongo Driver通过NUUID搜索?

时间:2019-04-17 18:03:15

标签: ruby mongodb uuid

我正在尝试使用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

0 个答案:

没有答案