3

MongoDB objectid 可以只包含数字吗?

我正在使用的库中有一段代码执行以下操作:

if (is_int($mixed) || ctype_digit($mixed)) {
    return;
}

结果,它丢弃了我的数据库中 ObjectId 为“512417805115179054000022”的记录,因为它只包含数字。

其他每条记录都有一个 ObjectId,其中至少包含一个 alpha 字符,例如“51241740511517a25b000017”

这是函数的问题,它假设 ObjectId实际上可能永远不能只包含数字,还是驱动程序的一些较低级别的问题,或者创建了只有数字字符的 ObjectId 错误?

4

2 回答 2

5

在 MongoDB中用于验证对象 ID 的正则表达式是/^[0-9a-fA-F]{24}$/

这意味着,对象 ID 可以包含来自 的数字和来自 的0-9大写或小写字母a-f。并且 ID 将始终包含24字符。因此,只有数字的对象 ID 与只有字母的对象 ID 一样可能。

于 2014-06-30T06:07:15.527 回答
1

ObjectId 是 BSON,您看到的是 HEXADecimal 表示。所以是的,假设某些 ID 没有字母是正确的。

于 2013-05-31T20:43:35.800 回答