Как создать 10-символьный объектный идентификатор Mongo (например, Parse Server) - PullRequest
0 голосов
/ 14 мая 2019

Мне очень любопытно, как создать объектные идентификаторы Mongodb длиной 10 символов, то есть (XlatDx2nYf), которые Parse Server использует для своего хранилища записей.

Я спрашиваю конкретно, потому что пытаюсь свернуть монолит Parse в более сервис-ориентированный подход, в данном случае основанный на Java, и не могу понять, как создавать объекты с этими, казалось бы, «искаженными» objectIds. Но этот вопрос более общий, чем интерфейс Java / Mongodb. На самом деле я понятия не имею, как Parse Server уходит от создания записей с этими пользовательскими идентификаторами объектов, которые не соответствуют Mongodb ObjetId стандартам . Объяснение здесь было бы потрясающим.

Оттуда я чувствую, что могу понять это в мире Java (Morphia). Спасибо за ваш вклад, ребята!

1 Ответ

1 голос
/ 16 мая 2019

Мне кажется, что эти идентификаторы разбора - это просто Base62-кодированные целые числа.Я нашел этот фрагмент , который может форматировать любой int в этот формат.

К сожалению, даже Java long занимает всего 8 байт, поэтому вы не можете получить ObjectId за один раз, но должно работать что-то вроде следующего:

ObjectId myId = new ObjectId()
String base62 = Base62.fromBase10(myId.getTimestamp()) + 
   Base62.fromBase10(myId.getMachineIdentifier()) + 
   Base62.fromBase10(myId.getProcessIdentifier()) +
   Base62.fromBase10(myId.getCounter());
...