sql >> Database >  >> NoSQL >> MongoDB

krijg mongodb _id object na upsert met php

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


  1. Mongoose findOneAndUpdate en upsert retourneert geen fouten, geen documenten beïnvloed

  2. Aan de slag met Redis Client API's

  3. Hoe resultaten van dynamisch gegenereerde formulieren op te slaan in MongoDb?

  4. Wat is het nut van Jade of Handlebars bij het schrijven van AngularJs-apps?