一、什么是mongoDB
MongoDB
是一种开源的非关系型数据库,正如它的名字所表示的,MongoDB
支持的数据结构非常松散,是一种以bson
格式(一种json
的存储形式)的文档存储方式为主,支持的数据结构类型更加丰富的NoSQL
数据库。它是一种介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB
主要用于处理大量的数据存储。很多时候 MongoDB
用于实现那些由于使用类似 MySQL
的关系型数据库而困难的大尺度、高性能、灵活模式的数据库。
MongoDB
的主要特点有:
- 面向集合存储:适合存储对象及JSON类型数据,数据模型可变。
- 动态模式:MongoDB不需要预定义结构,如SQL数据库那样需要先定义表,再进行插入操作。你可以自由地在集合中插入数据,无需先定义文档结构。
- 支持丰富的查询操作。
- 支持索引:任何一个MongoDB集合文件可以建立索引。
- 支持自动分片:自动云存储。
- 使用高效的二进制数据存储,包括了大型对象(比如视频等)。
- 支持复制和故障恢复。
- 支持 Map/Reduce 和聚合工具。
MongoDB
的应用场景
MongoDB是一种非关系型数据库,它为现代应用程序提供了规模化、灵活和详细的数据模型及综合特性。以下是一些MongoDB的应用场景。
-
内容管理系统:
在为内容管理系统(CMS)设计数据模型时,因为内容、评论、修订历史、标签和其它元数据的异质性和大小的巨大差异,所以非结构化数据库如MongoDB特别适合这种用途。 -
实时数据分析:
MongoDB为开发者提供了许多内置的函数,使得他们可以部分地或者完全地在数据库级别完成对大数据的实时处理。 -
物联网:
MongoDB可以高效的处理和分析来自于传感器以及智能设备的大量数据,凭借其地理位置查询的功能,mongodb成为物联网的一个常用数据库。 -
移动应用:
MongoDB支持多种数据格式,灵活的数据模型和分片功能,使得在移动应用中可以轻易应对快速发布新版本。 -
游戏开发:
MongoDB提供了对大量用户数据的存储和处理能力,并且具有十分高的扩展性,可以很好地应对游戏数据的爆发式增长。 -
个性化推荐:
MongoDB可以存储大量的用户数据,包括点击数据、购买数据以及其他在线行为数据,这些都是进行个性化推荐的基础。
以下是一个实际应用案例:
MetLife
(美国人寿保险公司)使用MongoDB
开发了一款名叫“The Wall
”的应用程序,这款应用可以将用户的碎片化信息汇总到一块 "墙"上。这些信息包括但不仅限于保单信息、索赔状态、保费、家庭成员资料等等一系列可能来自于不同来源(SQL或者是NoSQL)的数据。
二、mongoDB的下载与安装
mongodb管网:https://www.mongodb.com/
1. 进入官网之后打开文档
2. 找到install介绍
3. 根据自己的系统安装对应的版本
这里介绍一下在windows下如何安装。
下载之后,双击运行根据提示安装就行了。
配置环境变量
安装完成之后我们打开shell命令窗口,输入:mongo
如图:提示没有这个命令,这时我们需要配置一下mongodb的执行环境变量
我的电脑->属性->高级系统设置->环境变量->path
如图,这样在path下配置一下就可以了,
我们再次打开shell,输入mongo
这样就成功啦。
三、mongoDB可视化工具介绍
1. MongoDB Compass
这个工具是你用mis方式安装时,mongoDB官方自带的可视化工具
2. Navicat Premium
Navicat官网:https://www.navicat.com.cn/
这款工具功能很强大,支持很多数据库的可视化,我们选择连接,点击MongoDB.
点击新建查询,输入show dbs
查看系统默认的数据库
3. MongoDB for VS Code
去插件市场安装以后,点击connect连接
四、mongodb常用命令
命令 | 描述 |
---|---|
db.help() | 显示数据库操作命令,如createCollection(name, options)、dropDatabase()等。 |
db..help() | 显示集合操作命令,如db..find().help()、db..drop()等。 |
show dbs | 显示数据库列表。 |
use <db_name> | 切换当前数据库到<db_name>。如果数据库不存在,会创建新的数据库。 |
show collections | 显示当前数据库中的集合(相当于关系数据库中的表)。 |
db.createCollection(name, options) | 创建集合。 |
db.collection.insert() | 插入数据。 |
db.collection.find() | 查询数据。 |
db.collection.update() | 更新数据。 |
db.collection.remove() | 删除数据。 |
db.collection.drop() | 删除集合。 |
db.collection.createIndex(keys, options) | 创建索引。 |
db.collection.dropIndex(name) | 删除索引。 |
db.collection.getIndexes() | 列出所有索引。 |
db.collection.count() | 计算集合中的文档数。 |
db.collection.aggregate(pipeline) | 对集合中的文档进行各种形式的聚合操作。 |
db.runCommand(cmd) | 运行数据库命令。 |
这些是常用的一些Mongodb命令,具体使用可以参考Mongodb的文档说明。
1. 对集合数据的增删改查
在MongoDB中,对集合数据的增删改查(CRUD)操作可以通过db.collection.find(), .insert(), .update(), .delete()方法执行。假设我们有一个叫做"user"的集合,包含"Name"和"Age"的字段。
查询
我们可以使用.find()方法来查询数据。例如,你可以通过以下方式来查找所有用户:
db.user.find({})
这将列出所有的用户。
如果你想查找特定的用户,你可以添加查询条件,如下所示:
db.user.find({"name" : "Alice"})
该查询将列出名字为Alice的所有用户。
插入
你可以使用.insert()方法插入数据。例如,你可以通过以下方式插入一个新的用户:
db.user.insert({"name" : "Bob", "age" : 30})
这将在集合中创建一个新用户,名为Bob,年龄30。
更新
对于更新,我们使用.update()方法。例如,我们可以更新名为Alice的用户的年龄,如下所示:
db.user.update({"name" : "Alice"}, {$set : {"age" : 25}})
在上面的例子中,第一个对象是我们想要更新的用户的查询条件,第二个对象是我们想要更改的字段和新值。
删除
删除数据可以使用.remove()方法。例如,我们可以删除名为Bob的用户,如下所示:
db.user.remove({"name" : "Bob"})
以上就是如何在MongoDB中对一个集合中的数据进行增删改查操作。
五、node中连接mongoDB
1. 使用mongodb连接
连接MongoDB
数据库是Node.js
应用程序很常见的一种需求。我们可以通过使用第三方包mongodb
来实现这一点。在开始之前,确保你的系统上已经安装了mongodb
和node.js
,而且`mongodb``服务器已经运行。
下面是一个详细的步骤:
步骤1:首先,我们需要在我们的项目中安装mongodb
第三方包。在终端中,切换到你的项目路径,然后执行以下命令来安装:
npm install mongodb
步骤2:在你的Node.js
代码里,你需要引入mongodb
项:
const MongoClient = require('mongodb').MongoClient;
步骤3:然后,你需要创建一个MongoDB客户端,连接数据库。下面是一个例子:
const uri = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
这里的URI是你的mongodb
数据库的URI
,格式是mongodb://username:password@server:port/database
。如果你是在本地使用mongodb
,URI
可能会是"mongodb://localhost:27017/mydb
"。
步骤4:接下来,你需要连接到MongoDB
服务器。你可以使用以下的代码来实现:
client.connect(err => {
if (err) throw err;
console.log("Connected to MongoDB server");
client.close();
});
如果你成功地连接到了MongoDB
服务器,将会在控制台打印出"Connected to MongoDB server
"。如果遇到任何问题,程序会抛出异常。
步骤5:你也可以在连接后对数据库进行增删改查的操作。例如:
client.connect(err => {
if (err) throw err;
const collection = client.db("test").collection("devices");
// perform actions on the collection object
client.close();
});
步骤6:记得在完成所有操作后关闭连接。
完整代码如下:
//通过mongodb连接mongodb
const { MongoClient } = require('mongodb') //引入mongodb
const url = 'mongodb://localhost:27017'
const dbName = 'test'
const clinet = new MongoClient(url, { useUnifiedTopology: true }) //创建客户端
const main = async () => {
await clinet.connect() //连接数据库
console.log('连接成功')
const db = clinet.db(dbName) //选择数据库
const collection = db.collection('users') //选择集合
//插入数据
const result = await collection.insertOne({ name: 'jack', age: 20 })
console.log(result)
//查询数据
const resultFind = await collection.find({ name: 'jack' }).toArray()
console.log(resultFind)
//更新数据
// const result = await collection.updateOne({ name: 'jack' }, { $set: { age: 21 } })
// console.log(result)
//删除数据
// const result = await collection.deleteOne({ name: 'jack' })
// console.log(result)
}
main().catch(console.dir).finally(() => {
clinet.close() //关闭连接
})
以上就是在Node.js中通过mongodb包连接MongoDB数据库的全部步骤。
2. 使用mongoose连接
在Node.js
连接MongoDB
数据,我们还可以使用一个名为Mongoose
的包。Mongoose
是一个MongoDB
对象建模工具,设计用于在异步环境中工作。
以下是一些步骤来连接你的数据库:
安装 Mongoose
我们需要确保已经安装了node.js 和 npm(包管理工具)。然后,在你的node.js应用的根目录中运行以下命令来安装Mongoose:
npm install mongoose
初始化mongoose 连接
使用下列JavaScript代码段来初始化mongoose连接。这段代码应该被放置在你的主应用文件(通常是app.js或者server.js)的开头:
const mongoose = require('mongoose');
mongoose.connect('mongodb://<username>:<password>@<hostname>:<port>/<database>');
在这段代码中,<username>和<password>需要被你的MongoDB用户名和密码替换.<hostname>和<port>如果你使用的是本地数据库这两个参数通常是localhost和27017.<database>则是你希望连接的数据库名。
监听Connection events
你需要监听两个事件:
-
error:在连接过程中出错时将被触发。
-
open:当连接成功建立时将被触发。
下面的代码给了添加和监听这些事件的例子:
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
// yay!
});
你的Mongoose连接现在应该可以被Node.JS应用使用了。
始终记住,连接操作在应用启动时只被调用一次。你可以用mongoose.connection对象在你的应用代码中的任何位置获取当前的数据库连接。不要多次调用mongoose.connect,因为可能会导致意外的结果。
完整代码如下:
// 引入数据库处理模块
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true, useCreateIndex: true })
.then(() => console.log('数据库连接成功'))
.catch(() => console.log('数据库连接失败'))
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
// 查询user集合中的所有文档
db.collection('users').find().toArray(function (err, docs) {
// 打印
console.log(docs);
});
});
以上就是在Node.js中通过mongoose包连接MongoDB数据库的全部步骤