2015-08-04 8 views

Odpowiedz

28

Dobrze jest odpowiednia dokumentacja, aby zobaczyć zarówno .update() i .findAndModify() która jest metodą korzeń .findOneAndUpdate() tutaj.

Ale główne różnice istnieją:

  • update(): jest przeznaczony do wykonywania atomowej operacji aktualizacji przeciwko „jeden lub więcej” dokumentów dobranych przez niego jest warunkiem zapytań w kolekcji. Zwraca liczbę zmodyfikowanych dokumentów w odpowiedzi.

  • findOneAndUpdate(): ma na celu zarówno rozpatrzenie statment aktualizacji na „szczególny” dokumentu, a także pobierania zawartości tej „szczególnej” dokumentu. Zwrócony stan zależy od wartości "nowej" opcji przekazanej do operacji. Gdzie true "zmodyfikowany" dokument jest zwracany. Gdzie false "oryginalny" dokument jest zwracany przed jakąkolwiek modyfikacją. Ta ostatnia forma jest domyślną opcją.

Krótko mówiąc. Jeden ma na celu modyfikację w "luzem" i nie martwić się o treść dokumentu w wyniku. Drugi ma na celu zmodyfikowanie pojedynczego dokumentu i zwrócenie zawartości dokumentu w wyniku.

Taka jest różnica.

+2

Pytanie byłoby bardziej spójne w następujący sposób: Jaka jest różnica między mongoDB "findOneAndUpdate" i "updateOne", lub/i jaka jest różnica między aktualizacją mongoDB a "findAndModify". Wydajność? –

3

Sposób .findOneAndUpdate wyda polecenie aktualizacji MongoDB .findAndModify i zwraca znalezionego dokumentu (jeśli w ogóle) do wywołania zwrotnego lub powrotu zmodyfikowanego dokumentu zamiast oryginału, jeśli opcja new jest true i .update wykonać kwerendę jako operacja update() .