MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Créer MongoDB ObjectID à partir d'une date antérieure à l'aide du pilote PHP

À l'heure actuelle, le pilote PHP n'a pas de fonctionnalité intégrée pour cela, le __set_state() que l'autre réponse mentionnée est uniquement pour pouvoir désérialiser en session l'ID et ne vous permet pas de le créer via les composants spécifiques.

Vous devrez procéder comme suit pour créer automatiquement un identifiant :

<?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() ) );
?>