windows下安装mongodb以及node.js连接mongodb实例

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对象文档映射工具,可以方便地进行文档操作,减少开发人员对于数据库的操作复杂度。

数据库标签