sql >> Database >  >> NoSQL >> MongoDB

Comprimeer (verkort) PHP-tekenreeks van 24 tekens tot 20

Van wat ik zie op je pagina waarnaar wordt verwezen, zijn de 24-tekens hexadecimaal. Als klant-ID alfanumeriek kan zijn, kunt u base_convert gebruiken om het nummer in te korten. Helaas is het volledige nummer> 32bit, dus je moet het in delen verbergen om het te laten werken:

// Pad with 0's to make sure you have 24 chars
$padded = str_repeat('0', 24 - strlen($mongoId)) . $mongoId;
$leastSignificant = base_convert(substr($padded, 14, 10), 16, 32); // will be 8 chars most
$middleSignificant = base_convert(substr($padded, 4, 10), 16, 32); // will be 8 chars most
$highSignificant = base_convert(substr($padded, 0, 4), 16, 32); // will be 4 chars most

// Concatenate, and make sure everything is correctly padded
$result = str_repeat('0', 4 - strlen($highSignificant)) . $highSignificant .
          str_repeat('0', 8 - strlen($middleSignificant )) . $middleSignificant .
          str_repeat('0', 8 - strlen($leastSignificant )) . $leastSignificant;
echo strlen($result); // Will echo 20

// Reverse the algoritm to retrieve the mongoId for a given customerId 



  1. Hoe een query uit te voeren met punt (. ) via Mongoose in Node.js en hoe een lege array toe te voegen

  2. MongoDB:WriteResult.getN() retourneert altijd 0?

  3. Mongodb groeperen en pushen met lege arrays

  4. Vind MongoDB-records waar het matrixveld niet leeg is