Come utilizzare il metodo FindOneAndupdate in MongoDB

Come utilizzare il metodo FindOneAndupdate in MongoDB
MongoDB supporta molteplici funzioni utilizzate per elaborare i dati nei database. In qualsiasi database, il processo di aggiornamento dei dati è inevitabile e viene eseguito frequentemente. Il metodo FindOneAndupdate viene utilizzato per aggiornare un singolo documento che corrisponde alla condizione e questo metodo è un'estensione del metodo di aggiornamento principale di MongoDB.

IL FindOnAndupdate () Il metodo restituisce il documento dopo l'aggiornamento, mentre il aggiornamento () Metodo di MongoDB aggiorna anche un documento ma non restituisce alcun documento.

In questo articolo, imparerai a capire e applicare il FindOneandupdate() Metodo di MongoDB per abbinare e aggiornare un singolo documento.

Come finteAndupdate () funziona in MongoDB

Il meccanismo di lavoro di questo metodo si basa sulla sintassi indicata di seguito:

db.collezione-nome.FindOneAndUpdate (filter, update, options)

Nella sintassi sopra:

collezione-nome si riferisce alla raccolta di un database Mongo in cui risiede il documento.

filtro è una condizione per abbinare il documento.

aggiornamento contiene i campi e i valori associati da aggiornare

opzioni sono i parametri per perfezionare l'elaborazione dell'aggiornamento. Ad esempio, il "maxtimems"L'opzione viene utilizzata per limitare il tempo per l'esecuzione di una query. Se il limite di tempo specificato supera, la query non verrà eseguita.

Come applicare il metodo FindOnAndupdate () in MongoDB

In questa sezione, è fornita una guida dettagliata con l'aiuto di diversi esempi per utilizzare il metodo FindOneAndupdate ():

Esempio 1: aggiornamento di un singolo documento

Per questo esempio, useremo un "Laptop"La raccolta e i seguenti contenuti risiedono in esso:

> db.Laptop.Trovare().bello()

Vogliamo aggiungere un "Stato" campo con il valore "disponibile"Ai documenti in cui il"Unità"Il valore è maggiore o uguale a"50". Il comando menzionato di seguito eseguirà l'aggiornamento sopra menzionato con l'aiuto del FindOnAndupdate () metodo.

> db.Laptop.FindOneAndUpdate ("Unità": $ gte: 50, $ set: "status": "disponibile")

Le seguenti osservazioni sono disegnate dall'output sopra:

IL FindOnAndupdate () Metodo restituito il documento originale (prima dell'aggiornamento).

Dato che ci sono due documenti che hanno "Unità"Valore maggiore o uguale a"50", ma il FindOnAndupdate () Il metodo considera il primo che corrisponde alla condizione.

È possibile verificare l'aggiornamento utilizzando il comando menzionato di seguito: e si notato che un solo documento viene aggiunto con il campo "Stato".

> db.Laptop.Trovare().bello()

Esempio 2: restituzione del documento aggiornato

Per impostazione predefinita, il metodo FindonEAndupdate () restituisce il documento originale. È possibile ottenere il documento aggiornato in cambio impostando il "ReturnnewDocument"Valore dell'opzione a"VERO".

Il comando scritto di seguito aggiungerà un nuovo campo "gatto"E il suo valore è impostato su"Gioco". L'aggiornamento viene eseguito nel documento in cui il "Prezzo"Il valore è uguale 1750. Inoltre, il "ReturnnewDocument"Il valore è"VERO". Quindi, deve restituire il documento aggiornato.

> db.Laptop.FindOneAndUpdate ("Price": 1750, $ set: "cat": "Gaming", returnnewDocument: true)

L'output mostra che il documento restituito dal comando sopra è una versione aggiornata.

Esempio 3: Utilizzo del metodo FindOneAndupdate () con le opzioni

Multiple opzioni sono supportate da questo metodo, poiché abbiamo applicato il "ReturnnewDocument"Opzione in"Esempio 2". In questa sezione, vengono spiegate diverse altre opzioni supportate da questo metodo.

upsert: Il valore del "upsert"L'opzione è falsa per impostazione predefinita. E se è impostato su “VERO", IL FindOnAndupdate () Il metodo creerà un nuovo documento se la condizione non corrisponde a qualsiasi documento.

Ad esempio, il comando sotto menzionato cercherà i documenti in cui il "Fare"Il valore corrisponde"Alieno" nel Laptop collezione. Dal momento che nessun documento ha un valore di campo "Alieno ", Pertanto, verrà creato un nuovo documento perché abbiamo impostato il "upsert"Valore come"VERO".

Nota: Abbiamo anche usato il “ReturnnewDocument"Opzione per ottenere il documento aggiornato in cambio.

> db.Laptop.FindOneAndUpdate ("make": "alien", $ set: "prezzo": 1500, "gatto": "gaming", upsert: true, returnnewdocument: true)

maxtimems: Questa opzione viene utilizzata per limitare il tempo (in millisecondi) per il comando di aggiornamento. Se il limite di tempo specificato supera, la query restituirà un errore. Ad esempio, abbiamo impostato il "maxtimems"Opzione per valorizzare"2"Nel comando di seguito menzionato:

> db.Laptop.FindOneAndUpdate ("make": "alien", $ set: "unità": 15, "prezzo": 1850, returnnewdocument: true, maxtimems: 2)

Nota: Il valore del "maxtimems"L'opzione deve essere numerica (non float o qualsiasi altro tipo di dati).

Conclusione

Il processo di aggiornamento ha un ruolo chiave in qualsiasi sistema di gestione del database perché i dati devono essere aggiornati con il tempo in qualsiasi organizzazione. Diverse estensioni del metodo di aggiornamento sono utilizzate da MongoDB come FindOnAndupdate (). In questo post informativo, abbiamo fornito una breve applicazione di questo metodo in MongoDB. Il metodo target corrisponde al primo documento in base alla condizione e quindi aggiorna i campi specifici di quel documento.