1. MongoDB 概述
MongoDB 可以简单的理解为是一个基于分布式文件存储的 NoSQL数据库,由于其高性能、高可用性、易扩展等特点,成为了很多企业进行互联网应用、大数据开发等非关系型数据库的首选。
MongoDB 分类
MongoDB 分为社区版和企业版两个版本,不同版本功能有所区别。本文以社区版进行讲解。
MongoDB 安装
针对 Mac 系统,我们可以使用 brew 进行安装
brew tap mongodb/brew
brew install mongodb-community@4.4
安装完成后,可以使用以下命令检查安装是否成功:
mongod --version
mongo --version
返回如下信息表示安装成功:
db version v4.4.9
Build Info: {
"version": "4.4.9",
"gitVersion": "295f2a18c9832772e84a1b52e806f7c58f9aeb1a",
"openSSLVersion": "OpenSSL 1.1.1k FIPS 25 Mar 2021",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
2. MongoDB 的基本操作
2.1 基本概念
MongoDB 可以理解为是一个数据仓库,数据以文档形式存储。
文档(Document)
文档是 MongoDB 中最基本的单位,它们类似于 JSON 对象,由键值对组成。
{
"name": "John",
"age": 25,
"address": {
"street": "Main street",
"city": "New York"
}
}
集合(Collection)
集合是一组文档的集合,类似于 RDBMS 中的表,可以在集合中存储不同类型的数据。
db.createCollection("mycollection");
数据库(Database)
数据库是 MongoDB 中的顶级概念,创建集合和文档都必须在先创建数据库后才能进行操作。
use mydatabase;
2.2 基础操作
插入文档
插入文档可以通过 insert() 或 save() 方法来实现,值得注意的是 MongoDB 基于的是动态架构的模型,即不需要定义文档的结构
db.mycollection.insert({
"name": "Tom",
"age": 28
});
查询文档
查询文档可以使用 find() 方法,其中可以传入查询条件以及相关参数(如限制查询结果返回数量等)。
db.mycollection.find();
更新文档
更新文档可以使用 update() 或 save() 方法。
db.mycollection.update({
"name": "John"
}, {
$set: {
"age": 29
}
});
删除文档
删除文档可以使用 remove() 方法。
db.mycollection.remove({
"name": "Tom"
});
3. 在 Node.js 中使用 MongoDB
3.1 安装依赖
MongoDB 的 Node.js 驱动程序可以通过 npm 安装。
npm install mongodb --save
3.2 连接 MongoDB
Node.js 中连接 MongoDB 可以使用 MongoClient。
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/mydatabase';
MongoClient.connect(url, (err, db) => {
if (err) throw err;
console.log("MongoDB Database created!");
db.close();
});
3.3 插入文档
Node.js 中插入文档可以使用 insert()
MongoClient.connect(url, (err, db) => {
if (err) throw err;
const dbo = db.db("mydatabase");
const myobj = { name: "Company Inc", address: "Highway 37" };
dbo.collection("customers").insertOne(myobj, (err, res) => {
if (err) throw err;
console.log("1 document inserted");
db.close();
});
});
3.4 查询文档
Node.js 中查询文档可以使用 find()
MongoClient.connect(url, (err, db) => {
if (err) throw err;
const dbo = db.db("mydatabase");
dbo.collection("customers").find({}).toArray((err, result) => {
if (err) throw err;
console.log(result);
db.close();
});
});
3.5 更新文档
Node.js 中更新文档可以使用 updateOne()
MongoClient.connect(url, (err, db) => {
if (err) throw err;
const dbo = db.db("mydatabase");
const myquery = { name: "Company Inc" };
const newvalues = { $set: {address: "Canyon 123"} };
dbo.collection("customers").updateOne(myquery, newvalues, (err, res) => {
if (err) throw err;
console.log("1 document updated");
db.close();
});
});
3.6 删除文档
Node.js 中删除文档可以使用 remove()
MongoClient.connect(url, (err, db) => {
if (err) throw err;
const dbo = db.db("mydatabase");
const myquery = { name: 'Company Inc' };
dbo.collection("customers").deleteOne(myquery, (err, obj) => {
if (err) throw err;
console.log("1 document deleted");
db.close();
});
});
总结
本文介绍了 MongoDB 在 Mac 系统上的基础使用方法,包括 MongoDB 安装、基本操作以及 Node.js 中使用 MongoDB。
对于大数据处理、互联网应用等领域,MongoDB 是非常实用的。希望本文对大家能有所帮助。