【问题标题】:Finding items by simpler ID's on MongooseJS在 MongooseJS 上通过更简单的 ID 查找项目
【发布时间】:2012-10-29 15:00:35
【问题描述】:

我在玩猫鼬模式。我有 3 个项目,每个项目都有一个对应的 ID 字段,如下所示:

"_id": "508dcb79cb1c8ad910000001","
"_id": "508dcba389e2f32e11000002","
"_id": "508dcba389e2f32e11000003","

是否有任何默认方法来处理大块 ID 以获得更干净的 ID,而无需设置自定义 ID 的数字来获取与 ID 对应的最后一个数字? 或者我应该使用正则表达式或其他东西来通过 id 获取它们,如下所示:

app.get('/fields/:id', function(req, res) { ; });

并使用/field/1/field/3 或其他方式访问它们。

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    here 所述,文档的 ObjectID 由时间戳、机器 ID、进程 ID 和计数器组成。我看不出有一种方法可以单独使用计数器并得出 ObjectID。使用正则表达式搜索索引可能不是一个好主意,因为您最终会遍历索引中的所有 ObjectID。正如here 所指出的,只有简单的前缀正则表达式才能利用索引。此外,我认为多个文档可能具有相同的计数器,例如如果在两台不同的机器上对同一个集合进行写入。

    所以简短的回答是“不”。如果你真的想要短 ID,你可能应该使用自己的 sequence numbers,使用类似 shortid 的东西,或者只是通过一个自然唯一的索引(如果你的集合恰好有一个)来查找文档,比如电子邮件、用户名等.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 2013-01-26
      • 2010-11-13
      相关资源
      最近更新 更多