InsertOne против Create в MongoDB: битва титанов ввода данных

В мире MongoDB выделяются два тяжелых метода добавления данных в базу данных: insertOneи create. Оба метода служат для создания новых документов, но у них есть небольшие различия, которые могут повлиять на то, как вы работаете с данными. В этой статье мы рассмотрим эти методы, предоставим примеры кода и поможем вам понять, когда использовать каждый из них.

InsertOne: быстрый и простой ввод данных
Если вы ищете простой способ добавить один документ в базу данных MongoDB, вам подойдет insertOne. С помощью всего лишь нескольких строк кода вы можете вставить новую запись и позволить MongoDB обработать уникальный идентификатор за вас. Давайте рассмотрим пример:

const MongoClient = require('mongodb').MongoClient;
// Connection URL and database name
const url = 'mongodb://localhost:27017';
const dbName = 'myDatabase';
// Creating a new document using insertOne
MongoClient.connect(url, function(err, client) {
  if (err) throw err;
  const db = client.db(dbName);
  const collection = db.collection('myCollection');
  const newDocument = { name: 'John Doe', age: 30 };
  collection.insertOne(newDocument, function(err, res) {
    if (err) throw err;
    console.log('Document inserted!');
    client.close();
  });
});

В этом примере мы устанавливаем соединение с сервером MongoDB с помощью MongoClient, указываем имя базы данных и создаем новый документ с nameи ageполей. Наконец, мы вызываем insertOneдля объекта коллекции, чтобы добавить документ в коллекцию. Это так просто!

Создание: расширенное создание и настройка документов
Хотя insertOneотлично подходит для простого ввода данных, метод createпредлагает больше гибкости и возможностей настройки. С помощью createвы можете устанавливать значения по умолчанию, определять валидаторы и даже указывать индексы для своих документов. Давайте углубимся в пример:

const mongoose = require('mongoose');
// Connection URL and database name
const url = 'mongodb://localhost:27017';
const dbName = 'myDatabase';
// Defining the schema for the document
const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  age: {
    type: Number,
    default: 18
  }
});
// Creating a new document using create
mongoose.connect(`${url}/${dbName}`, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    const User = mongoose.model('User', userSchema);
    const newUser = { name: 'Jane Smith', age: 25 };
    User.create(newUser)
      .then(() => {
        console.log('Document created!');
        mongoose.disconnect();
      })
      .catch((error) => {
        console.error(error);
        mongoose.disconnect();
      });
  })
  .catch((error) => {
    console.error(error);
  });

В этом примере мы используем популярную библиотеку Mongoose для определения схемы нашего документа с помощью mongoose.Schema. Мы указываем, что поле nameявляется обязательным, а поле ageимеет значение по умолчанию 18. Затем мы устанавливаем соединение с сервером MongoDB, используя mongoose.connectи создайте новый документ, используя метод createдля модели User.

И insertOne, и create— мощные методы создания новых документов в MongoDB. Если вам нужен быстрый и простой способ добавить один документ, insertOne— это то, что вам нужно. С другой стороны, если вам требуются расширенные возможности настройки и вы хотите использовать функции, предоставляемые такими библиотеками, как Mongoose, create— лучший выбор. Понимание различий между этими методами поможет вам принимать обоснованные решения при работе с данными в MongoDB.