sql >> Database >  >> NoSQL >> MongoDB

Maak MongoDB ObjectID van datum in het verleden met behulp van PHP-stuurprogramma

Op dit moment heeft het PHP-stuurprogramma hiervoor geen ingebouwde functionaliteit, de __set_state() die het andere antwoord noemde, is alleen bedoeld om de ID te kunnen deserialiseren en niet toe te staan ​​​​om het te maken via de specifieke componenten.

U moet het volgende doen om automatisch een ID aan te maken:

<?php
function createId( $yourTimestamp )
{
    static $inc = 0;

    $ts = pack( 'N', $yourTimestamp );
    $m = substr( md5( gethostname()), 0, 3 );
    $pid = pack( 'n', posix_getpid() );
    $trail = substr( pack( 'N', $inc++ ), 1, 3);

    $bin = sprintf("%s%s%s%s", $ts, $m, $pid, $trail);

    $id = '';
    for ($i = 0; $i < 12; $i++ )
    {
        $id .= sprintf("%02X", ord($bin[$i]));
    }
    return new MongoID($id);
}

var_dump( createId( time() ) );
?>


  1. AfschaffingWaarschuwing:het luisteren naar gebeurtenissen in de Db-klasse is beëindigd en wordt verwijderd in de volgende hoofdversie

  2. $ projectie in mongoDB findOneAndUpdate()

  3. Hoe kan ik gewijzigde documenten ophalen na een updatebewerking in mongodb met pymongo?

  4. applicatie time-out bij verbinding met MongoLab vanuit Heroku