MongoDB
MongoDB 是一个流行的开源 NoSQL 数据库,由 MongoDB Inc. 开发。它是一个文档数据库,意味着它以文档的形式存储数据,这些文档的格式类似于 JSON。
MongoDB 在可扩展性、性能和灵活性方面表现出色,是开发现代应用程序的热门选择之一。以下是 MongoDB 的一些关键特点:
优点
文档导向
MongoDB 存储的数据单元是文档,这些文档组织成集合。文档由字段(key)和值(value)对组成,类似于 JSON 对象。
文档可以包含不同类型的数据,如字符串、数字、布尔值、数组,甚至嵌套文档。
查询语言
MongoDB 提供了强大的查询语言,允许您执行各种复杂的查询操作,包括文档字段的过滤、文档的排序和限制返回结果数量等。
它还支持聚合操作,允许您进行数据处理和分析。
索引
为了提高查询效率,MongoDB 支持对文档中的字段建立索引。
索引可以显著提高查询性能,特别是在处理大量数据时。
应用场景
MongoDB 适合需要处理大量数据且数据结构多变的应用程序,如内容管理系统、电子商务网站、数据仓库和大数据应用。
MongoDB 的这些特性使它成为当今应用程序开发中广泛使用的数据库之一,特别是在需要快速迭代和处理非结构化或半结构化数据的场景中。
安装
- mongoDB在Centos安装
- 使用navicat链接使用
使用
const express = require('express');
const config = require('./config.json');
const {MongoClient} = require('mongodb');
const app = express();
app.use(express.json());
const url = config.mongodb.url;
const dbName = config.mongodb.dbName;
const client = new MongoClient(url, { useUnifiedTopology: true });
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.post('/add', async (req, res) => {
const {name, age} = req.body;
try {
await client.connect();
const db = client.db(dbName);
const collection = db.collection('users');
const result = await collection.insertOne({name, age});
res.json(result);
} catch (err) {
console.log(err);
}
});
app.get('/users', async (req, res) => {
try {
await client.connect();
const db = client.db(dbName);
const collection = db.collection('users');
const result = await collection.find({}).toArray();
res.json(result);
} catch (err) {
console.log(err);
}
});
app.get('/users/age', async (req, res) => {
const {age} = req.query;
try {
await client.connect();
const db = client.db(dbName);
const collection = db.collection('users');
const result = await collection.find({ age: { $gt: 25 } }).toArray();
res.json(result);
} catch (err) {
console.log(err);
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
和mysql的比较
mongoDB
- 灵活的数据模型:MongoDB 使用文档型数据模型,无需预定义模式,适合快速迭代和处理多变的数据结构。
- 水平扩展性:通过分片(Sharding),MongoDB 支持大规模的水平扩展。
- 高效的处理大量数据:适合大数据应用和实时分析。
- 强大的查询语言:支持复杂的查询和聚合操作。
- 高可用性和自动故障转移:通过复制集实现。
- 适合非结构化和半结构化数据:如 JSON 或 BSON 格式。
mysql
- 成熟的技术:作为关系型数据库,MySQL 有着多年的发展和广泛的应用,技术成熟。
- 严格的数据模式:有助于确保数据的完整性和一致性。
- 强大的事务支持:支持复杂的事务处理和锁定机制。
- 高效的 JOIN 操作:在处理关系型数据时表现出色。
- 广泛的社区和工具支持:有大量的工具和社区支持。