3

MongoDB オブジェクト ID に数字のみを含めることはできますか?

私が使用しているライブラリには、次のことを行うコードがあります。

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

その結果、ObjectId が '512417805115179054000022' である DB のレコードが破棄されます。これには数字しか含まれていないためです。

他のすべてのレコードには、「51241740511517a25b000017」などの少なくとも 1 つのアルファ文字を含む ObjectId があります。

これは、実際には可能であるのに、ObjectId に数字のみを含めることはできないと想定している関数の問題ですか、それともドライバーの低レベルの問題か、数値のみの ObjectId をエラーで作成したものですか?

4

2 に答える 2

5

オブジェクト ID を検証するために MongoDB 内部で使用される正規表現は次のとおりです。/^[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 に答える