2016-05-11 13 views
9

Powiedzmy mam dokumentCzy MongoDB zapytuje o operacje wykonywane po stronie klienta?

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

teraz muszę pchnąć tablicę do nameArray użyciu $ Push. Jak aktualizuje dokument w takim przypadku. Czy dokument pobierany jest na kliencie, a aktualizacje są wykonywane na kliencie, a zmiany są następnie odzwierciedlane na serwerze bazy danych Mongodb. Cała operacja przeprowadzana jest w bazie Mongodb.

Odpowiedz

3

To, o co tutaj pytasz, to czy operacje MongoDB są operacjami po stronie klienta. Krótka odpowiedź to NO.

W MongoDB zapytanie kierowanej na zbiór dokumentów wymienione w documentation i collection to grupy dokumentów MongoDB który występuje w obrębie jednej database. Kolekcje są po prostu tym, jakie tabele są w RDBMS. Jeśli więc zapytanie jest skierowane do określonej kolekcji, oznacza to, że są one wykonywane na poziomie bazy danych, a więc po stronie serwera. To samo dotyczy operacji data modification i .

Czasami twoje operacje mogą wymagać przetwarzania po stronie klienta, ponieważ MongoDB nie zapewnia sposobu na osiągnięcie tego, czego chcesz od razu po wyjęciu z pudełka. Ogólnie rzecz biorąc, ty tylko przetwarzanie tego typu, gdy chcesz zmodyfikować strukturę dokumentów w kolekcji lub zmienić typ pól. W takiej sytuacji będziesz musiał odzyskać swoje dokumenty, przeprowadzić modyfikację przy użyciu używając bulk operations.

2

See the documentation:

macierzy jest umieszczony w istniejącym tablicy jako jeden element. Jeśli tablica nie istnieje, zostanie utworzona. Jeśli cel nie jest tablicą, operacja kończy się niepowodzeniem.

Nie ma nic określonego jak "pobieranie elementu do klienta i aktualizowanie go tam". Tak więc operacja jest całkowicie wykonana po stronie serwera bazy danych. Nie znam żadnej operacji, która działałaby w sposób opisany przez ciebie. Chyba, że ​​łańcuchujesz zapytanie, modyfikujesz przedmiot na kliencie i aktualizację. Ale są to dwie oddzielne operacje, a nie jedno polecenie.

Powiązane problemy