mongodb - 在 MongoDB 中创建自定义对象 ID

我正在创建一个服务,我将使用 MongoDB 作为存储后端。 该服务将生成用户输入的哈希,然后查看我们的数据集中是否已经存在相同的哈希(+ 输入)。

哈希是唯一的但随机的(=非增量/顺序),所以我的问题是:

  1. 对对象 ID 使用随机值是否合法?示例:

$object_id = new MongoId(HEX-OF-96BIT-HASH);

或者 MongoDB 会以不同于其他服务器生成的 ObjectID 的方式处理 ObjectID,因为“真实”的 ObjectID 还包含时间戳、machine_id 等?

使用“随机”值的优缺点是什么?我猜当新的 _id 没有以任何方式递增时,引擎更新插入索引的速度会在统计上变慢 - 我对此是否正确?

最佳答案

是的,对对象 id 使用随机值是完全可以的,如果正在存储的文档的 _id 字段中存在某个值,则将其视为 objectId。

由于 _id 字段始终是索引的,并且是主键,因此您需要确保为每个对象生成不同的 objectid。 有一些指南可以优化用户定义的对象 ID:

https://docs.mongodb.com/manual/core/document/#the-id-field .

https://stackoverflow.com/questions/12211138/

相关文章:

php - 安装 PHP 7 MongoDB 客户端/驱动程序?

java - MongoDB 是关系 db + lucene 的有效替代品吗?

sql - 为什么 MongoDB 比 SQL DB 快得多的任何详细和具体原因?

node.js - 如何检查MongoDB native nodejs驱动程序中是否存在集合?

mongodb - 如何在mongodb中找到最小值

sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点

mongodb - 在 Mongo 中,如何显示集合的索引?

javascript - Node.js - 等待多个异步调用

mongodb - 如何在不丢失数据的情况下调整 mongodb 上限集合的大小?

c# - MongoDB C# 驱动程序 : Ignore Property on Insert