Как искать по NUUID, используя драйвер Ruby Mongo? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь выполнить поиск по значению NUUID в коллекции Mongodb, используя драйвер Ruby Mongo, и не получаю результатов.Я могу успешно искать по другим полям, но их недостаточно для моих нужд.Я подозреваю, что эта проблема связана с форматированием и преобразованием UUID в / из NUUID.

Я попытался передать следующий идентификатор:

в виде строки

в качестве двоичных данных, используя BSON :: Binary.new

в качестве двоичных данных, используя BSON :: Binary.new, указывая тип (: uuid,: uuid_old)

после преобразования их в base64 изhex

после ручного переключения с порядкового номера байта / младшего порядка

после ручного переключения с порядкового номера байта / старшего номера И преобразования его в регистр 64 из шестнадцатеричного

Множество комбинацийэти тактики.

Я заметил, что после преобразования порядкового номера идентификатор выглядит как значение, которое я вижу в документе json, возвращенном с помощью поиска по имени, но я все еще не могу выполнить поиск по этому идентификатору.

Последовательное преобразование

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
...