Ya -- Bisa menggunakan satu kueri.
MongoDB menyertakan findAndModify
perintah yang secara atom dapat memodifikasi dokumen dan mengembalikannya (secara default sebenarnya mengembalikan dokumen sebelum diubah).
Driver PHP tidak menyertakan metode yang nyaman untuk ini di kelas koleksi (belum -- periksa bug ini), tetapi masih dapat digunakan (perhatikan bahwa PHP saya buruk, jadi saya mungkin telah membuat kesalahan sintaksis dalam cuplikan berikut):
$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'];