MongoDB的objectid可以只包含数字吗?
我正在使用的库中有一段代码,它执行以下操作:
if (is_int($mixed) || ctype_digit($mixed)) {
return;
}
因此,它在我的数据库中丢弃了一个ObjectId为'512417805115179054000022'的记录,因为它只包含数字。
其他每条记录都有一个包含至少一个alpha字符的ObjectId,例如'51241740511517a25b000017'
这是一个函数的问题,它假设一个ObjectId 永远不能只包含数字,当它实际上是可能的,或者它是一些较低层次的问题与驱动程序或东西,已经创建了一个ObjectId只有数字字符错误?
MongoDB内部用来验证对象ID的正则表达式是/^[0-9a-fA-F]{24}$/
即对象ID既可以包含0-9
中的数字,也可以包含a-f
中的大写或小写字母。并且ID将始终具有24
字符。因此,只有数字的对象ID和只有字母的对象ID是尽可能多的。
objecd是BSON,您看到的是十六进制表示。因此,假设某些id不包含字母是正确的。