mongodb - 从其组件构建 mongo 十六进制对象 ID,例如时间戳。计数器,随机值
问题描述
我有一个程序将 mongo BSON 编组为 JSON,其中 mongo 对象 ID 由其组件表示:
"id": {
"date": 1487703734000,
"timestamp": 1487703734,
"counter": 14046291,
"processIdentifier": 24019,
"machineIdentifier": 6597369,
"timeSecond": 1487703734,
"time": 1487703734000
}
我可以将其转换为十六进制的 mongo ID 吗?我可以在mongo 对象 ID 文档中看到它是如何组成的,但我不确定我的 JSON 中是否有他们所说的“随机值”。(看来我确实有时间戳和计数器)
任何帮助表示赞赏。谢谢
解决方案
是的,您可以使用任何支持的驱动程序来完成。您可以使用 5 字节随机值(3 字节机器 ID 和 2 字节进程 ID)。你可以参考这个它有很好的解释。
这是java和python选项。
您可以使用java 驱动程序来做到这一点。但它已被弃用。
ObjectId(Date date, int machineIdentifier, short processIdentifier, int counter)
没有办法使用 mongodb 命令。每种支持 mongo 的编程语言都有一个生成选项,objectId
但可能没有这个特定的选项。
python
有一个选择。参考
默认情况下,ObjectId() 创建一个新的唯一标识符。可选参数 oid 可以是 ObjectId,也可以是任何 12 个字节,或者在 Python 2 中,可以是任何 12 个字符的 str。
例如,12 字节 b'foo-bar-quux' 不遵循 ObjectId 规范,但它们是可接受的输入:
ObjectId(b'foo-bar-quux') => ObjectId('666f6f2d6261722d71757578')
但我不确定我的 JSON 中是否有他们所说的“随机值”
推荐阅读
- java - 如何使用 Java 获取存储在 Azure KeyVault 中的证书
- hive - 是否有 Hive 2 独立元存储解决方案?
- ios - 使用百分比填充 UIView
- javascript - Vue-router 只显示基本路由
- excel - 如何在具有过滤器的数据透视表(Excel for Mac)中获得不同的计数?
- android - SPI驱动,搜索从哪里开始
- excel - 如何在数据透视表中的多列小计中找到百分比
- ios - 在 Swift 中使用 WillSpeakRange 委托中断 AVSpeechUtterance 并恢复
- html - 可访问性:输入元素可访问性的帮助文本
- php - Composer 自动加载某些子文件夹中缺少的类