2016-03-07 9 views
17

MongoDB operacje masowe są dwie opcje:Jaka jest różnica między replaceOne() i updateOne() w MongoDB?

  1. Bulk.find.updateOne()

    Dodaje pojedynczą operację aktualizacji dokumentu do listy operacji zbiorczych. Operacja może zastąpić istniejący dokument lub zaktualizować określone pola w istniejącym dokumencie.

  2. Bulk.find.replaceOne()

    Dodaje pojedynczą operację zastępczy dokument do listy operacji zbiorczych. Użyj metody Bulk.find(), aby określić warunek określający, który dokument należy zastąpić. Metoda Bulk.find.replaceOne() ogranicza zastąpienie do pojedynczego dokumentu.

Zgodnie z dokumentacją, zarówno z tych dwóch metod może zastąpić dokument dopasowanie. Czy rozumiem poprawnie, że metoda updateOne() jest bardziej ogólną metodą, która może zastąpić dokument dokładnie tak, jak robi to robota replaceOne() lub tylko zaktualizować jego określone pola?

Odpowiedz

19

Z można tylko zastąpić cały dokument, jednak updateOne() pozwala aktualizować pola, które zostały odnotowane w pytaniu.

Ale oznacza to również można użyć operatorów zmiana:

https://docs.mongodb.org/manual/reference/operator/update/

I IIRC można zmienić schemat korzystając updateOne() czego nie można zrobić z replaceOne()

+2

Co masz na myśli z „zmień schemat"? – caub

+2

Zamień zastępuje dokument na nowy, używając tych samych parametrów. z aktualizacją można dodawać/usuwać parametry, które składają się na dokument. – Hughzi

+3

ah ok, więc zamień zawsze zmieniaj '_id' – caub

Powiązane problemy