В чем разница между replaceOne() и updateOne() в MongoDB?

MongoDB массовые операции имеют два варианта:

  1. Bulk.find.updateOne()

    добавляет одну операцию обновления документа в список массовых операций. Операция может заменить существующий документ или обновить определенные поля в существующем документе.

  2. Bulk.find.replaceOne()

    добавлена замена одного документа операция в списке массовых операций. Используй Балк.метод find (), чтобы указать условие, определяющее, какой документ заменить. основная масса.находить.метод replaceOne () ограничивает замену одним документом.

согласно документации, оба этих метода могут заменить соответствующий документ. Правильно ли я понимаю, что updateOne() является более общим методом, который может либо заменить документ точно так же, как replaceOne(), или просто обновить конкретные поля?

1 ответов


С replaceOne() вы можете заменить только весь документ, однако updateOne() позволяет обновлять поля, которые вы отметили в вопросе.

но это также означает, что вы можете использовать операторы обновления:

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

и IIRC вы можете изменить схему, используя updateOne() что вы не можете сделать с replaceOne()