Модель документа Mongoose.replaceOne() API

Опубликовано: 31 Декабря, 2022

Метод Model.replaceOne() API Mongoose используется для замены любого документа в коллекции. Этот метод работает так же, как метод обновления, но он заменяет существующий документ MongoDB данным документом с любым атомарным оператором, например $set.

Синтаксис:

Model.replaceOne()

Параметры: метод Model.replaceOne() принимает четыре параметра:

  • фильтр: это объект для фильтрации всех документов с соответствующим полем, которое необходимо обновить.
  • doc: Это объект с полем, которое заменит существующее поле.
  • варианты: Это объект с различными свойствами.
  • обратный вызов: это функция обратного вызова, которая запускается после завершения выполнения.

Тип возвращаемого значения: функция Model.replaceOne() возвращает обещание. Результат содержит объект со следующими ключом и значениями или свойствами.

Настройка приложения Node.js:

Шаг 1. Создайте приложение Node.js с помощью следующей команды:

npm init

Шаг 2: После создания приложения NodeJS установите необходимый модуль с помощью следующей команды:

npm install mongoose

Структура проекта: Структура проекта будет выглядеть следующим образом:

Структура базы данных: Структура базы данных будет выглядеть так, в коллекции присутствуют следующие документы.

Пример 1. В этом примере мы установили соединение с базой данных с помощью мангуста и определили модель поверх customerSchema, имея три столбца или поля «имя», «orderCount» и «superUser». В конце концов, мы используем метод replaceOne() в модели Customer, который заменит документ на основе условия, заданного в качестве первого параметра метода. И замените эти документы полями, указанными в объекте в качестве второго параметра метода. В этом примере мы фильтруем документы на основе «_id» и заменяем его значения полями, предоставленными в объекте в качестве второго параметра.

  • app.js: запишите приведенный ниже код в файл app.js:

Javascript




// Importing the module
const mongoose = require("mongoose");
  
// Set up the Database connection
mongoose.connect(
    useNewUrlParser: true,
    useUnifiedTopology: true
})
  
// Defining customerSchema schema
const customerSchema = new mongoose.Schema(
    { name: String, orderCount: Number, superUser: Boolean }
)
  
// Defining customerSchema model
const Customer = mongoose.model("Customer", customerSchema);
  
// replaceOne() method
Customer.replaceOne({ _id: "630ca42f5e5d4f1de37cf654" },
    { name: "Customer3", orderCount: 100, superUser: true })
     .then(result => {
        console.log(result)
    })

Шаги для запуска программы: Чтобы запустить приложение, выполните следующую команду из корневого каталога проекта:

node app.js

Выход:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

Графическое представление базы данных с помощью инструмента Robo3T GUI

Пример 2. В этом примере мы фильтруем документы на основе «_id» и заменяем его значения полями, предоставленными в объекте в качестве второго параметра. Если вы видите в выводе GUI, мы заменили поле «имя» с «Customer2» на «Customer2 Example 2», а также изменили значения для «orderCount». Эта функциональность достигается с помощью любого атомарного оператора, например $set.

  • app.js: запишите приведенный ниже код в файл app.js:

Javascript




// Importing the mongoose module
const mongoose = require("mongoose");
  
// Set Up the Database connection
mongoose.connect(
    useNewUrlParser: true,
    useUnifiedTopology: true
})
  
// Defining customerSchema schema
const customerSchema = new mongoose.Schema(
    { name: String, orderCount: Number, superUser: Boolean }
)
  
// Defining customerSchema model
const Customer = mongoose.model("Customer", customerSchema);
  
// Calling the replaceOne() method.
Customer.replaceOne({ _id: "630ca4260edd88312bf28db1" },
    {
        name: "Customer2 Example2",
        orderCount: 0, superUser: false
    }).
    then(result => {
        console.log(result)
    })

Шаги для запуска программы: Чтобы запустить приложение, выполните следующую команду из корневого каталога проекта:

node app.js

Выход:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

Графическое представление базы данных с помощью инструмента Robo3T GUI

Ссылка: https://mongoosejs.com/docs/api/model.html#model_Model-replaceOne