我在Mongodb中存储从API接收的数据,并且刚刚意识到数据包含_id,因此,在执行插入时,Mongodb没有创建objectid但是插入了我收到的字符串_id。
所以现在,我想从字符串_id转换为objectid。这样做的最佳策略是什么?
谢谢!
答案 0 :(得分:1)
new_oid = ObjectId(string_id)
没问题。如果机器ID和进程ID匹配,则无关紧要。
虽然可以从ObjectIds中提取一些信息,但我不会在生产代码中依赖它。
关于时间戳
时间戳实际上并不是商业价值,而是将文件插入数据库的时间,而您想知道例如收到订单的时间。
此外ObjectId并不能保证良好的时间戳:
ObjectId值的顺序与生成之间的关系 时间在一秒钟内不严格。如果是多个系统,或者 单个系统上的多个进程或线程生成值, 在一秒钟内; ObjectId值不代表严格 插入顺序。客户端之间的时钟偏差也可能导致 因为客户端驱动程序生成,所以即使是值也不严格排序 ObjectId值,而不是mongod进程。
因此,我有时会在开发过程中使用ObjectId的timestamp属性作为查找最新文档的便捷方法,但并不关心它的内容。