我正在创建一个服务,我将使用 MongoDB 作为存储后端。 该服务将生成用户输入的哈希,然后查看我们的数据集中是否已经存在相同的哈希(+ 输入)。
哈希是唯一的但随机的(=非增量/顺序),所以我的问题是:
$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驱动程序中是否存在集合?
sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
mongodb - 在 Mongo 中,如何显示集合的索引?
javascript - Node.js - 等待多个异步调用