sql >> Databasteknik >  >> NoSQL >> MongoDB

hämta mongodb _id-objekt efter upsert med php

Ja – det är möjligt att använda en enda fråga.

MongoDB innehåller en findAndModify kommando som kan atomiskt modifiera ett dokument och returnera det (som standard returnerar det faktiskt dokumentet innan det har modifierats).

PHP-drivrutinerna inkluderar inte en bekväm metod för detta i samlingsklassen (ännu -- kolla in den här buggen), men den kan fortfarande användas (observera att min PHP är hemsk, så jag kan mycket väl ha gjort ett syntaxfel i följande utdrag):

$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. Vilken SchemaType i Mongoose är bäst för tidsstämpel?

  2. Slaget om NoSQL-databaserna - Jämför MongoDB och CouchDB

  3. spring session redis 'Ingen böna med namnet 'springSessionRepositoryFilter' är definierad'

  4. Fjäderdata MongoDb:MappingMongoConverter remove _class