В мире 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.