java - 如何创建 10 个字符长度的 Mongo ObjectId(如 Parse Server)

标签 java mongodb indexing morphia objectid

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

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

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

最佳答案

在我看来,这些解析 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());

关于java - 如何创建 10 个字符长度的 Mongo ObjectId(如 Parse Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56120702/

相关文章:

python - 无法在 Django Rest 框架中创建没有字段的模型

php - Symfony2 - 呈现引用为父类(super class)实例的对象的子类属性

c++ - 书籍索引,如何查看每个单词并根据其首字母存储

java - Eclipse 需要异常处理,即使它没有工作?

java - 在我的 Pac-Man 女士实现中可能过度使用了 java 接口(interface)

javascript - 类型错误 : JwtStrategy is not a constructor; NodeJS

java - 将新的 Key 添加到 HashMap 的最后一个索引而不是第一个索引

java - 将 `Java.lang.String` 转换为 `oracle.sql.TIMESTAMPTZ`

java - 使用 UDP 停止并等待套接字编程

java - IndexOutOfBoundsException : Index: 3, 大小:3