一、什麼是MongoDB?
MongoDB是一種開源的、以文檔為基礎的NoSQL數據庫。它是一個面向文檔的數據庫,使用JSON格式存儲數據。MongoDB具有擴展性強、易於配置、高性能、高可用性和易於管理等特點,因此被廣泛用於Web應用程序的開發。MongoDB使用數據集合來存儲和組織數據,而文檔則是數據存儲和檢索的基本單位。
MongoDB具有很多的優勢,例如支持高並發、高性能、可擴展性強、極易部署和操作、可自由擴展等特點。對於需要高並發能力或者需要輕鬆部署的Web應用程序來說,MongoDB是一個很好的選擇。同時,MongoDB也具有數據安全性高、數據隨時可訪問、數據存儲靈活等優勢。
下面是一個連接MongoDB數據庫並操作的代碼示例:
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'myproject';
MongoClient.connect(url, function(err, client) {
console.log('Connected successfully to server');
const db = client.db(dbName);
client.close();
});
二、MongoDB基礎
MongoDB提供了非常多的功能,採用了非常簡單的CRUD操作。下面是一些基礎的MongoDB語法:
- 創建數據庫:use mydb;
- 刪除數據庫:db.dropDatabase();
- 選擇數據庫:use mydb;
- 創建集合:db.createCollection(“mycollection”);
- 插入數據:db.mycollection.insert({“name”:”Bob”,”age”:26});
- 查詢數據:db.mycollection.find();
- 更新數據:db.mycollection.update({“name”:”Bob”},{$set:{“age”:27}});
- 刪除數據:db.mycollection.remove({“name”:”Bob”});
三、MongoDB高級用法
MongoDB不僅提供了基礎的CRUD操作,在高級用法上也有非常多的功能。下面是一些常用的高級用法:
- 索引:可以提高查詢性能,MongoDB可以創建多種類型的索引,例如單鍵、複合、文本、地理位置等;
- 聚合:可以對文檔進行分組、計數、求和、平均值、最大值、最小值等操作;
- 備份和還原:可以使用mongodump和mongorestore命令進行備份和還原;
- 複製和故障轉移:通過主從複製和故障轉移實現高可用性;
- 分片:可以將數據分散存儲在多個服務器上,實現水平擴展;
- 數據清理:可以使用expireAfterSeconds字段自動清理數據;
- 事務:MongoDB 4.0及以上支持多文檔事務功能。
下面是一個使用索引的代碼示例:
db.mycollection.createIndex( { "name": 1 } )
db.mycollection.find( { name: "Bob" } )
四、MongoDB實戰
MongoDB有很多實戰應用,例如數據分析、物聯網、社交應用、電子商務等等。下面是一個使用Node.js和MongoDB實現的簡單Web應用程序代碼示例:
const express = require('express');
const bodyParser= require('body-parser')
const MongoClient = require('mongodb').MongoClient;
const app = express();
app.use(bodyParser.urlencoded({extended: true}))
app.set('view engine', 'ejs')
const url = 'mongodb://localhost:27017';
const dbName = 'myproject';
app.listen(3000, function() {
console.log('listening on 3000')
})
app.get('/', function(req, res) {
res.render('index.ejs');
});
app.post('/add', function(req, res) {
MongoClient.connect(url, function(err, client) {
const db = client.db(dbName);
db.collection('mycollection').insertOne(req.body, (err, result) => {
if (err) return console.log(err)
console.log('saved to database')
res.redirect('/')
})
})
})
原創文章,作者:GIIEZ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/315854.html
微信掃一掃
支付寶掃一掃