Mac 系统上使用 MongoDB 数据库的指南

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 是非常实用的。希望本文对大家能有所帮助。

数据库标签