2016-05-11 16 views
9

Diciamo che ho un documentoLe query di MongoDB sono operazioni lato client?

{ "_id" : ObjectId("544946347db27ca99e20a95f"), "nameArray": [{"id":1 , first_name: "foo"}] 

Ora ho bisogno di spingere un array in nameArray utilizzando $ spinta. Come funziona l'aggiornamento del documento in quel caso. Il documento viene recuperato sul client e gli aggiornamenti si verificano sul client e le modifiche vengono quindi riflesse sul server di database Mongodb. L'intera operazione viene eseguita nel database di Mongodb.

risposta

3

Quello che ti chiedi qui è se le operazioni MongoDB sono operazioni lato client. La risposta breve è NO.

In MongoDB una query si rivolge a una raccolta specifica di documenti Come indicato nella documentation e un collection è un gruppo di documenti MongoDB che esiste all'interno di un unico database. Le raccolte sono semplicemente quali sono le tabelle in RDBMS. Pertanto, se la query è rivolta a una raccolta specifica, significa che vengono eseguite a livello di database, quindi sul lato server. La stessa cosa vale per le operazioni data modification e aggregation.

A volte, le operazioni possono implicare un'elaborazione sul lato client poiché MongoDB non fornisce un modo per ottenere ciò che si desidera immediatamente. In generale, si tratta solo di quel tipo di elaborazione quando si desidera modificare la struttura dei documenti nella raccolta o modificare il tipo di campi. In tale situazione, è necessario recuperare i documenti, eseguire la modifica utilizzando bulk operations.

2

See the documentation:

vostro array viene inserito nella matrice esistente come un elemento. Se l'array non esiste viene creato. Se la destinazione non è un array, l'operazione fallisce.

Non c'è nulla di simile a "ritirare l'elemento al client e aggiornarlo lì". Quindi l'operazione è completamente eseguita sul lato server del database. Non conosco nessuna operazione che funzioni nel modo in cui tu l'hai descritta. A meno che non si stia concatenando una query, con una modifica dell'elemento nel client e un aggiornamento. Ma queste sono due operazioni separate e non un singolo comando.