目录
  1. 1. MongoDB
    1. 1.1. 关系型数据库和非关系型数据库
  2. 2. 启动和关闭数据库
  3. 3. 连接和退出数据库
  4. 4. MongoDB基本命令
  5. 5. 在node中操作MongoDB数据库
    1. 5.1. 使用官方MongoDB包来操作
    2. 5.2. 使用第三方mongoose来操作MongoDB操作
    3. 5.3. 使用例子:设计scheme发布model
    4. 5.4. 以及增删改查
非关系型数据库MongoDB的使用

a

MongoDB

详细: https://www.runoob.com/mongodb/mongodb-tutorial.html
步骤:下载–安装–配置环境变量–输入MongoD –version

基本概念:有数据库–集合–文档

可以有多个数据库,一个数据库中可以有多个集合(表),一个集合中可以有多个文档(表记录),文档结构和灵活,没有任何限制。不需要像MySQL一样先创建数据库、表、设计结构,是需要在需要插入数据的时候指定往哪个数据库的哪个集合操作就可以了,MongoDB自动完成创建库创建表这件事。

1
{
2
  qq:{
3
     users:[
4
         {name:'张三', age:15},
5
         {name:'李四', age:15},
6
         {name:'张三54', age:15},
7
         {name:'张三1543', age:15}
8
         ....
9
     ],
10
     products:[
11
     
12
     ],
13
     ....
14
  },
15
  taobao:{
16
  
17
  }
18
  baidu:{
19
  
20
  }
21
}
关系型数据库和非关系型数据库

表就是关系
或者说表与表直接的存在关系。
1.所有的关系型数据库都需要通过sql语言来操作
2.所有的关系型数据库在操作之前都需要设计表结构
3.而且数据表还支持约束

  • 唯一的
  • 主键
  • 默认值
  • 非空

4.非关系型数据库非常灵活
5.有的菲关系型数据库就是key-value对儿
6.但是mogongdb是长得最像关系型数据库的非关系型数据库
数据库–>数据库
数据表–>集合(数组)
表记录–>文档对象
7.mogongdb不需要设计表结构
8.也就是说你可以任意的往里面存数据,没有结构性这么一说

启动和关闭数据库

启动:

1
# 使用所处盘符根目录下的/data/db作为自己的数据存储目录
2
# 所以在第一次执行该命令之前先自己手动新建一个/data/db
3
mongod

如果想要修改默认的数据库存储目录,可以:

1
Mongod --dbpath=数据存储目录路径

停止:

1
直接Ctrl+c
2
或者直接关闭cmd

连接和退出数据库

连接:

1
# 该命令默认连接本机的MongoDB服务
2
mongo

退出:

1
# 在连接状态
2
exit

MongoDB基本命令

1.show.dbs
查看显示所以数据库
2.db
查看当前操作的数据库
3.use 数据库名称
切换到指定的数据库(如果没有会新建)
4.插入数据

在node中操作MongoDB数据库

使用官方MongoDB包来操作

https://github.com/mongodb/node-mongodb-native

使用第三方mongoose来操作MongoDB操作

这个包是基于上面官方包做了一次封装
官方文档: http://www.mongoosejs.net/

安装:

1
npm i mongoose

使用:

1
const mongoose = require('mongoose');
2
mongoose.connect('mongodb://localhost/test');
3
4
const Cat = mongoose.model('Cat', { name: String });
5
6
const kitty = new Cat({ name: 'Zildjian' });
7
kitty.save().then(() => console.log('meow'));
使用例子:设计scheme发布model
以及增删改查
1
var mongoose = require('mongoose')
2
3
var Schema = mongoose.Schema
4
5
// 1. 连接数据库
6
// 指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
7
mongoose.connect('mongodb://localhost/itcast')
8
9
// 2. 设计文档结构(表结构)
10
// 字段名称就是表结构中的属性名称
11
// 约束的目的是为了保证数据的完整性,不要有脏数据
12
var userSchema = new Schema({
13
  username: {
14
    type: String,
15
    required: true // 必须有
16
  },
17
  password: {
18
    type: String,
19
    required: true
20
  },
21
  email: {
22
    type: String
23
  }
24
})
25
26
// 3. 将文档结构发布为模型
27
//    mongoose.model 方法就是用来将一个架构发布为 model
28
//    第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
29
//                 mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
30
//                 例如这里的 User 最终会变为 users 集合名称
31
//    第二个参数:架构 Schema
32
//   
33
//    返回值:模型构造函数
34
var User = mongoose.model('User', userSchema)
35
36
37
// 4. 当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据为所欲为了(增删改查)
38
// **********************
39
// #region /新增数据
40
// **********************
41
// var admin = new User({
42
//   username: 'zs',
43
//   password: '123456',
44
//   email: 'admin@admin.com'
45
// })
46
47
// admin.save(function (err, ret) {
48
//   if (err) {
49
//     console.log('保存失败')
50
//   } else {
51
//     console.log('保存成功')
52
//     console.log(ret)
53
//   }
54
// })
55
// **********************
56
// #endregion /新增数据
57
// **********************
58
59
60
61
62
// **********************
63
// #region /查询数据
64
// **********************
65
查询所有
66
// User.find(function (err, ret) {
67
//   if (err) {
68
//     console.log('查询失败')
69
//   } else {
70
//     console.log(ret)
71
//   }
72
// })
73
74
按条件查询
75
// User.find({
76
//   username: 'zs'
77
// }, function (err, ret) {
78
//   if (err) {
79
//     console.log('查询失败')
80
//   } else {
81
//     console.log(ret)
82
//   }
83
// })
84
85
按条件查询单个
86
// User.findOne({
87
//   username: 'zs'
88
// }, function (err, ret) {
89
//   if (err) {
90
//     console.log('查询失败')
91
//   } else {
92
//     console.log(ret)
93
//   }
94
// })
95
// **********************
96
// #endregion /查询数据
97
// **********************
98
99
100
101
// **********************
102
// #region /删除数据
103
// **********************
104
// User.remove({
105
//   username: 'zs'
106
// }, function (err, ret) {
107
//   if (err) {
108
//     console.log('删除失败')
109
//   } else {
110
//     console.log('删除成功')
111
//     console.log(ret)
112
//   }
113
// })
114
// **********************
115
// #endregion /删除数据
116
// **********************
117
118
119
// **********************
120
// #region /更新数据
121
// **********************
122
// User.findByIdAndUpdate('5a001b23d219eb00c8581184', {
123
//   password: '123'
124
// }, function (err, ret) {
125
//   if (err) {
126
//     console.log('更新失败')
127
//   } else {
128
//     console.log('更新成功')
129
//   }
130
// })
131
// **********************
132
// #endregion /更新数据
133
// **********************
文章作者: Byron
文章链接: https://byronk.top/2019/07/01/%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93MongoDB%E7%9A%84%E4%BD%BF%E7%94%A8/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 byron's | BLOG
打赏
  • 微信
  • 支付宝

评论