MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Holen Sie sich das mongodb _id-Objekt nach dem Upsert mit PHP

Ja – Es ist möglich, eine einzelne Abfrage zu verwenden.

MongoDB enthält ein findAndModify Befehl, der ein Dokument atomar ändern und zurückgeben kann (standardmäßig gibt er das Dokument tatsächlich zurück, bevor es geändert wurde).

Die PHP-Treiber enthalten dafür (noch) keine praktische Methode in der Sammlungsklasse -- sehen Sie sich diesen Fehler an, aber sie kann trotzdem verwendet werden (beachten Sie, dass mein PHP schrecklich ist, also könnte ich sehr wohl einen Syntaxfehler gemacht haben im folgenden Ausschnitt):

$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'];