Ja -- het is mogelijk met een enkele zoekopdracht.
MongoDB bevat een findAndModify
commando dat een document atomair kan wijzigen en retourneren (standaard wordt het document daadwerkelijk geretourneerd voordat het is gewijzigd).
De PHP-stuurprogramma's bevatten hiervoor geen handige methode in de collectieklasse (nog - bekijk deze bug), maar het kan nog steeds worden gebruikt (merk op dat mijn PHP verschrikkelijk is, dus het kan heel goed zijn dat ik een syntaxisfout heb gemaakt in het volgende fragment):
$key = array( 'something' => 'unique' );
$data = array( '$inc' => array( 'someint' => 1 ) );
$result = $mongodb->db->command( array(
'findAndModify' => 'collection',
'query' => $key,
'update' => $data,
'new' => true, # To get back the document after the upsert
'upsert' => true,
'fields' => array( '_id' => 1 ) # Only return _id field
) );
$id = $result['value']['_id'];