这次要和大家分享MongoDB 的使用,有时候会用到服务端的一些功能,简单的就可以自己写写,学习一下MongoDB真的是非常不错的选择。MongoDB 官网对其介绍如下:MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

1.安装配置

1.到官网下载安装包 https://www.mongodb.com/try/download/community

mongodb服务器 mongodb服务器默认端口_mongodb 默认端口号


2.安装,下一步即可。

3.安装完成配置环境变量 。系统变量Path中添加 C:\Program Files\MongoDB\Server\4.2\bin。之后重启。

mongodb服务器 mongodb服务器默认端口_数据_02


4.查看版本检查是否安装成功

mongodb服务器 mongodb服务器默认端口_数据_03

5.创建数据库和启动服务

1. D盘新建文件夹data,data下面新建文件夹db 
2. 打开cmd  ,切换到 C:\Program Files\MongoDB\Server\4.2\bin ,运行 mongod --dbpath D:\data\db

参考下图:

mongodb服务器 mongodb服务器默认端口_mongodb连接工具_04

2.命令行下的增删改查操作

在创建数据库和启动服务之后另外再开一个命令窗口:

mongodb服务器 mongodb服务器默认端口_mongodb服务器_05

之后就可以使用命令操作数据库了:

1.可以使用show dbs命令查看都有哪些数据库:

mongodb服务器 mongodb服务器默认端口_数据_06

2.可以使用use test新建或者切换数据库

mongodb服务器 mongodb服务器默认端口_mongodb 默认端口号_07

3.可以使用insert新增数据,如:

db.test.insert({"name":"zhangw"})

mongodb服务器 mongodb服务器默认端口_mongodb连接工具_08

4.可以使用find查找数据,如:

db.test.find()



mongodb服务器 mongodb服务器默认端口_mongodb连接工具_09



5.可以使用update修改数据,如:

db.test.update({"name":"newName"},{$set:{"age":16}});



mongodb服务器 mongodb服务器默认端口_mongodb默认端口号_10



6.可以使用remove删除数据,如:

db.test.remove({"name":"newName"})



mongodb服务器 mongodb服务器默认端口_mongodb连接工具_11



3.图形化工具下的操作

1.下载安装图形化工具 https://robomongo.org/download

2.建立连接

mongodb服务器 mongodb服务器默认端口_mongodb连接工具_12

3.使用图形化工具操作数据库

如下图是进行插入操作:

mongodb服务器 mongodb服务器默认端口_mongodb服务器_13

如下图是进行查询操作:

mongodb服务器 mongodb服务器默认端口_mongodb默认端口号_14

如下图是进行修改操作:

mongodb服务器 mongodb服务器默认端口_数据_15

如下图是进行删除操作:

mongodb服务器 mongodb服务器默认端口_mongodb默认端口号_16

4.Nodejs中使用 Mongoose 操作

看到了一个新词:Mongoose 。它是啥?一般我们不直接用MongoDB的函数来操作MongoDB数据库。Mongose就是一套操作MongoDB数据库的接口

先来介绍Mongoose里面两个重要的概念:

Schema (模式类型):一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model (模型):由 Schema 发布生成的模型,具有抽象属性和行为的数据库操作

下面看一下如何在node.js中使用Mongose。install mongoose之后,在index.js中添加如下代码:

const mongoose = require('mongoose');
const urlDev = "mongodb://localhost:27017/user"
mongoose.connect(urlDev, {
  useNewUrlParser: true
})
mongoose.connection.on('connected', function () {
  console.log(`数据库连接成功了`);
})
mongoose.connection.on('error', function () {
  console.log('出错了');
})
mongoose.connection.on('disconnected', function () {
  console.log('连接断开');
})

上述代码首先引入mongoose,然后建立连接。连接的url地址的形式为:

mongodb://数据库的ip地址:端口号/数据库名

如果端口号是默认的端口号(27017) 则可以省略不写 。

如下代码新建了模式类型然后根据模式类型新建了模型(User):

const User = mongoose.model('user', new mongoose.Schema({
    name: {type: String, require: true},
    age: {type: Number, require: true}
}))

下面看一下增删改查这些操作。

4.1 新增数据

User.create({
    name: 'newName7',
    age: 27
}, (err, doc) => {
    if (!err) {
        console.log(doc)
    } else {
        console.log(err)
    }
})

控制台打印出结果:

{ _id: 5f056c3a8aba110b9cedb9bf,
  name: 'newName7',
  age: 27,
  __v: 0 }

使用图形化工具查看数据库看到一条数据被添加到数据库:

mongodb服务器 mongodb服务器默认端口_mongodb连接工具_17

4.2 查找多条数据

在有newName7基础上,再新增一条数据newName6,然后运行查找数据的代码:

User.find({}, (err, doc) => {
    if (!err) {
        console.log(doc) // 得到的是数组
    } else {
        console.log(err)
    }
}

控制台打印结果:

[ { _id: 5f056c3a8aba110b9cedb9bf,
    name: 'newName7',
    age: 27,
    __v: 0 },
  { _id: 5f056d66e3bd183dc49e2e89,
    name: 'newName6',
    age: 26,
    __v: 0 } 
]

使用图形化工具查看数据库看到两条数据:

mongodb服务器 mongodb服务器默认端口_mongodb连接工具_18

4.3 查找一条数据

如果只查找一条数据则需要使用findOne:

User.findOne({}, (err, doc) => {
    if (!err) {
        console.log(doc) // 得到的是对象
    } else {
        console.log(err)
    }
})

控制台打印结果:

{ _id: 5f056c3a8aba110b9cedb9bf,
  name: 'newName7',
  age: 27,
  __v: 0 }

4.4 带条件的查找一条数据

带条件的查找需要在查询条件中添加相应的内容:

User.findOne({'name': 'newName5'}, (err, doc) => {
    if (!err) {
        console.log(doc) // 得到的是对象
    } else {
        console.log(err)
    }
})

控制台打印结果:

{ _id: 5f0570008a96460f6091cd59,
  name: 'newName5',
  age: 25,
  __v: 0 }

4.5 更新一条数据

使用updateOne更新数据:

User.updateOne({name: 'newName5'}, {$set: {age:22}}, (err,doc) =>{
    if (!err) {
        console.log(doc)
    } else {
        console.log(err)
    }
})

控制台打印结果:

{ n: 1, nModified: 1, ok: 1 }

4.6 更新多条数据

User.updateMany({name: 'newName5'}, {$set: {age:20}}, (err,doc) =>{
    if (!err) {
        console.log(doc)
    } else {
        console.log(err)
    }
})

控制台打印结果:

{ n: 2, nModified: 2, ok: 1 }

使用图形化工具查看数据库看到两条数据被更新了:

mongodb服务器 mongodb服务器默认端口_mongodb服务器_19

4.7 删除多条数据

deleteOne删除一条数据,deleteMany用于删除多条数据:

User.deleteMany({age: 20}, (err, doc) => {
    if (!err) {
        console.log(doc)
    } else {
        console.log(err)
    }   
})

控制台打印结果:

{ n: 2, ok: 1, deletedCount: 2 }

mongodb服务器 mongodb服务器默认端口_mongodb默认端口号_20

4.8 统计数据条数

新增3个25岁的newName,然后统计一下25岁的有几个,使用countDocuments统计个数:

User.countDocuments({age: 25}, (err, doc) => {
    if (!err) {
        console.log(doc)
        //3
    } else {
        console.log(err)
    }   
})

mongodb服务器 mongodb服务器默认端口_mongodb连接工具_21

mongoose还有有很多的方法以及高级用法比如聚合、比如关联查询等等,可以自己参照官网去实践练习。这次就和大家分享这么多,下次再见!