Sì, in una chiamata sicura (o getLastError) la funzione di aggiornamento restituirà un array con un campo upsert e un campo UpdateExisting.
Puoi leggere la versione PHP di questo qui:https://php.net/manual/en/mongocollection.insert.php verso il basso.
Come dice nella documentazione su upserted :
Se si è verificato un upsert, questo campo conterrà il campo _id del nuovo record. Per gli upsert, sarà presente questo campo o UpdateExisting (a meno che non si sia verificato un errore).
Quindi upserted contiene il _id del nuovo record se è stato eseguito un inserimento o aumenterà updatedExisting se ha aggiornato un record.
Sono sicuro che una cosa simile appare in tutti i driver.
Modifica
Sarà effettivamente un booleano in updatedExisting campo di true o false