Если вы не знакомы с MongoDB, ознакомьтесь с нашим руководством по его основам и о том, как его установить и использовать:)
Мы будем использовать официальный mongodb нпм пакет. Если у вас уже есть Node.js проект, над которым вы работаете, установите его с помощью
npm install mongodb
Если вы начинаете с нуля, создайте новую папку с вашим терминалом и запустите npm init -y для запуска нового Node.js проект, а затем запустите команду npm install mongodb .
Подключение к MongoDB
Вам требуется пакет mongodb , и вы получаете из него объект MongoClient.
const mongo = require('mongodb').MongoClientСоздайте URL-адрес сервера MongoDB. Если вы используете MongoDB локально, URL-адрес будет примерно таким mongodb://localhost:27017 , как 27017 является портом по умолчанию.
const url = 'mongodb://localhost:27017'
Затем используйте метод mongo.connect() , чтобы получить ссылку на клиент экземпляра MongoDB:
mongo.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, (err, client) => {
if (err) {
console.error(err)
return
}
//...
})Теперь вы можете выбрать базу данных с помощью метода client.db() :
const db = client.db('kennel')Создайте и получите коллекцию
Вы можете получить коллекцию с помощью метода db.collection() . Если коллекция еще не существует, она будет создана.
const collection = db.collection('dogs')Вставка данных в коллекцию Документ
Добавить к app.js следующая функция, которая использует метод insert One() для добавления коллекции объектов собак .
collection.insertOne({name: 'Roger'}, (err, result) => {
})Вы можете добавить несколько элементов с помощью вставить много() , передав массив в качестве первого параметра:
collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) => {
})Найти все документы
Используйте метод find() для коллекции, чтобы получить все документы, добавленные в коллекцию:
collection.find().toArray((err, items) => {
console.log(items)
})Найдите конкретный документ
Передайте объект методу find() для фильтрации коллекции на основе того, что вам нужно получить:
collection.find({name: 'Togo'}).toArray((err, items) => {
console.log(items)
})Если вы знаете, что получите один элемент, вы можете пропустить преобразование toArray() курсора, вызвав findOne() :
collection.findOne({name: 'Togo'}, (err, item) => {
console.log(item)
})Обновить существующий документ
Используйте метод update One() для обновления документа:
collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) => {
console.log(item)
})Удалить документ
Используйте метод удалить один() для удаления документа:
collection.deleteOne({name: 'Togo'}, (err, item) => {
console.log(item)
})Закрытие соединения
Как только вы закончите с операциями, вы можете вызвать закрыть( ) метод на объекте клиента:
client.close()
Используйте обещания или асинхронность/ожидание
Я опубликовал все эти примеры, используя синтаксис обратного вызова. Этот API также поддерживает обещания (и асинхронность/ожидание).
Например этот
collection.findOne({name: 'Togo'}, (err, item) => {
console.log(item)
})Может использоваться с обещаниями:
collection.findOne({name: 'Togo'})
.then(item => {
console.log(item)
})
.catch(err => {
console.error(err)
})или асинхронный/ожидающий:
const find = async () => {
try {
const item = await collection.findOne({name: 'Togo'})
} catch(err => {
console.error(err)
})
}
find()Оригинал: “https://flaviocopes.com/node-mongodb/”