1. 安装MongoDB
在Windows平台下安装MongoDB的过程相对简单,只需要下载安装包并运行即可。具体步骤如下:
1.1 下载MongoDB安装包
可以在官网下载对应版本的MongoDB安装包,常用的版本是Windows Server 2008 R2 64-bit and later,下载后双击运行即可。
1.2 安装
安装时可以选择自定义安装路径和开启服务等选项,按照提示一步步安装即可。
1.3 配置环境变量
配置环境变量可以使得命令行在任何路径下都可以访问到MongoDB。具体步骤如下:
# 打开环境变量配置窗口
win + r
sysdm.cpl
点击高级选项卡
点击环境变量按钮
# 配置环境变量
在系统变量中找到Path,然后添加mongodb的bin目录,比如C:\Program Files\MongoDB\Server\4.4\bin
点击确定按钮完成配置
1.4 启动服务
MongoDB的服务名称是mongod,在命令行中可以使用如下命令启动服务:
mongod
如果没有其他配置,MongoDB会在/data/db目录下创建数据文件,在此之前需要手动创建该目录。
1.5 停止服务
在命令行中可以使用如下命令停止MongoDB服务:
mongod --shutdown
1.6 连接MongoDB实例
在命令行中输入mongo可以连接MongoDB实例:
mongo
连接成功后会显示以下信息:
MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("e0367398-a4c1-4dd8-b6fd-cd9c6f45e5fe") }
MongoDB server version: 4.4.0
---
The server generated these startup warnings when booting:
2021-08-23T18:24:02.047+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
2021-08-23T18:24:02.048+08:00: You are running this process as the root user, which is not recommended
2021-08-23T18:24:02.048+08:00: This server is bound to localhost. Remote systems will be unable to connect to this server. Start the server with --bind_ip
to specify which IP
addresses it should serve responses from, or with --bind_ip_all to bind to all interfaces. If this behavior is desired, start the server with --bind_ip 127.0.0.1 to disable this warning
---
MongoDB Enterprise >
MongoDB shell是一个JavaScript交互式环境,可以输入JavaScript代码进行操作,例如输入help可以查看命令列表,输入quit或exit可以退出。
2. 连接MongoDB实例
在node.js中连接MongoDB需要使用第三方模块,目前比较常用的是mongoose模块。mongoose是一个MongoDB对象文档映射工具,可以方便地将文档对象映射为JavaScript对象。
2.1 安装mongoose
可以使用npm命令安装mongoose模块,具体命令如下:
npm install mongoose
这个命令会将mongoose模块安装到当前项目的node_modules目录下,如果没有该目录则会自动创建。
2.2 连接MongoDB实例
在使用mongoose与MongoDB进行交互前,需要先建立连接。mongoose提供了一个connect()方法,可以连接MongoDB服务器:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to MongoDB');
});
module.exports = db;
该代码将连接到test数据库服务器,默认端口是27017。如果连接成功,控制台输出Connected to MongoDB。
2.3 定义Schema和Model
在mongoose中,Schema是定义文档结构的模型,是一个JavaScript对象。Model是根据Schema编译而成的构造函数,可以进行文档操作。
下面是一个简单的示例,定义一个用户(User)的Schema和Model:
const { Schema, model } = require('mongoose');
const userSchema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String,
required: true
}
});
const UserModel = model('User', userSchema);
module.exports = UserModel;
该代码定义了一个用户(User)的Schema,包含了用户名和密码两个字段。通过调用model()方法,生成了一个用户(User)的Model,可以进行CRUD操作,示例代码中使用module.exports将UserModel导出,以便在其它模块中使用。
2.4 基本操作
在连接MongoDB后,就可以开始对数据库进行CRUD操作了。
2.4.1 新增记录(create)
可以使用Model的create()方法新增一条记录,例如:
const UserModel = require('./models/user');
const user = {
username: 'test',
password: '123456'
};
UserModel.create(user, function(err, result) {
if (err) {
console.log('Create user error:', err);
} else {
console.log('Create user success:', result);
}
});
该代码新增了一条用户名为test,密码为123456的记录。如果新增成功,会在控制台输出Create user success: { _id: 'xxx', username: 'test', password: '123456', __v: 0 }
2.4.2 查询记录(find)
可以使用Model的find()方法查询记录,例如:
const UserModel = require('./models/user');
UserModel.find({}, function(err, result) {
if (err) {
console.log('Find user error:', err);
} else {
console.log('Find user success:', result);
}
});
该代码查询了所有的用户记录。如果查询成功,会在控制台输出Find user success: [{ _id: 'xxx', username: 'test', password: '123456', __v: 0 }, ...]
2.4.3 更新记录(update)
可以使用Model的updateOne()、updateMany()或findOneAndUpdate()方法更新记录,例如:
const UserModel = require('./models/user');
UserModel.updateOne({ username: 'test' }, { password: '654321' }, function(err, result) {
if (err) {
console.log('Update user error:', err);
} else {
console.log('Update user success:', result);
}
});
该代码更新了用户名为test的密码为654321。如果更新成功,会在控制台输出Update user success: { n: 1, nModified: 1, ok: 1 }
2.4.4 删除记录(delete)
可以使用Model的deleteOne()、deleteMany()或findOneAndDelete()方法删除记录,例如:
const UserModel = require('./models/user');
UserModel.deleteOne({ username: 'test' }, function(err, result) {
if (err) {
console.log('Delete user error:', err);
} else {
console.log('Delete user success:', result);
}
});
该代码删除了用户名为test的记录。如果删除成功,会在控制台输出Delete user success: { n: 1, ok: 1, deletedCount: 1 }
总结
本文介绍了在Windows下安装MongoDB以及使用mongoose连接MongoDB实例的方法,包括安装MongoDB,连接MongoDB实例,定义Schema和Model,以及对数据库进行CRUD操作。mongoose是一个功能强大的MongoDB对象文档映射工具,可以方便地进行文档操作,减少开发人员对于数据库的操作复杂度。