MongoDB objectid只能包含数字吗?
我正在使用的库中有一段代码可以执行以下操作:
if (is_int($mixed) || ctype_digit($mixed)) {
return;
}
因此,它在我的数据库中丢弃了一个ObjectId为'512417805115179054000022'的记录,因为它只包含数字。
每个其他记录都有一个包含至少一个alpha字符的ObjectId,例如'51241740511517a25b000017'
这是函数的一个问题,它假设一个ObjectId 永远不会只包含数字,实际上是可能的,或者它是一个较低级别的问题与驱动程序或创建了一个只有数字字符错误的ObjectId?
答案 0 :(得分:4)
使用inside MongoDB验证对象ID的正则表达式为/^[0-9a-fA-F]{24}$/
这意味着,对象ID可以包含来自0-9
的数字和来自a-f
的大写或小写字母。 ID始终为24
个字符。因此,仅包含数字的对象ID与仅包含字母的对象ID一样多。
答案 1 :(得分:1)
ObjectId是BSON,您正在看到HEXADecimal表示。所以是的,假设某些ID没有字母是正确的。