如何创建10个字符长度的Mongo ObjectId(类似于Parse Server)

时间:2019-05-13 22:37:24

标签: java mongodb indexing morphia objectid

我很好奇如何创建Parse Server用于其记录存储的10个字符长的Mongodb objectId,即(XlatDx2nYf)。

我之所以特别提出问题,是因为试图将Parse整体式产品转为面向服务的方法(在这种情况下基于Java),并且无法弄清楚如何使用这些看似“格式错误”的objectIds创建对象。但是这个问题比Java / Mongodb接口更通用。我实际上不知道Parse Server如何摆脱使用不符合Mongodb ObjetId standards的这些自定义objectId创建记录的情况。这里的解释太棒了。

从那里我觉得我可以在Java(Morphia)世界中弄清楚。谢谢你们的投入!

1 个答案:

答案 0 :(得分:1)

在我看来,这些解析ID只是Base62-encoded整数。我发现this snippet可以将任何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());