Я пытаюсь выполнить поиск по значению 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