sql >> Database teknologi >  >> NoSQL >> MongoDB

få mongodb _id objekt efter upsert med php

Ja -- Det er muligt at bruge en enkelt forespørgsel.

MongoDB inkluderer en findAndModify kommando, der kan atomisk ændre et dokument og returnere det (som standard returnerer det faktisk dokumentet, før det er blevet ændret).

PHP-driverne inkluderer ikke en bekvem metode til dette på samlingsklassen (endnu -- tjek denne fejl), men den kan stadig bruges (bemærk at min PHP er forfærdelig, så jeg kan meget vel have lavet en syntaksfejl i følgende uddrag):

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


  1. Laravel og redis scanning

  2. MongoDB $dayOfMonth

  3. Fem tips til bedre MongoDB-hosting på Azure

  4. Forskellen mellem id- og _id-felter i MongoDB