最近看 Node.js 相关的一些东西,跟着书上的教程实现了一个 Express + MongoDB + Vue.js 实验性项目,对于常年使用 LNMP 黄金搭档的我来说,不用写 SQL 语句真的是太爽了,也不用关心 MySQL 中的字段增减,真的是太幸福了。
既然学习就肯定要动手,不动手的学习就是耍流氓!说干就干!
MongoDB 的基本概念存入单元:
- 数据库 databases
- 集合 collection
- 文档 document
正确的理解名词有助于我们在未来的开发和工作中方便和他人进行沟通,MongoDB 中可以存在多个数据,而数据库中可以存在多个集合,每个集合中可以存放多条文档数据。
希望大家通过练习来掌握基础 MongoDB 操作,别光看,动手敲! 别光看,动手敲! 别光看,动手敲!
- 进入 my_practices 数据库
- 查看数据库
- 向数据库的 user 集合插入一个文档
1 |
|
2 |
|
3 |
|
4 |
|
5 | db.users.insertOne({ |
6 | username: "Tom", |
7 | age: 18, |
8 | gender: "male" |
9 | }); |
- 查询 user 集合中的文档
- 向数据库的 user 集合中再插入一个文档
1 | db.users.insertOne({ |
2 | username: "Jerry", |
3 | age: 17, |
4 | gender: "male" |
5 | }); |
- 查看当前数据库 user 集合中的文档
- 统计数据库 user 集合中的文档数量
- 查询数据库 user 集合中 username 为 Tom 的文档
1 |
|
2 | db.users.find({ |
3 | username: "Tom" |
4 | }); |
- 向数据库 user 集合中的 username 为 Tom 的文档,添加一个 address 属性,属性值为 Shenzhen.
1 |
|
2 | db.users.update( |
3 | { |
4 | username: "Tom" |
5 | }, |
6 | { |
7 | $set: { address: "Shenzhen" } |
8 | } |
9 | ); |
- 使用{username: ‘Herry’} 替换 username 为 Jerry 的文档
1 | db.users.replaceOne( |
2 | { |
3 | username: "Jerry" |
4 | }, |
5 | { |
6 | username: "Herry" |
7 | } |
8 | ); |
- 删除 username 为 Tom 的文档的 address 属性
1 |
|
2 |
|
3 | db.users.update( |
4 | { |
5 | username: "Tom" |
6 | }, |
7 | { |
8 | $unset: { |
9 | address: "" |
10 | } |
11 | } |
12 | ); |
- 向 username 为 Tom 的文档中,添加一个 hobby:{cities: [‘BeiJing’, ‘ShangHai’], movies: [‘Hero’, ‘King’]}
1 |
|
2 |
|
3 | db.users.update( |
4 | { |
5 | username: "Tom" |
6 | }, |
7 | { |
8 | $set: { |
9 | hobby: { |
10 | cities: ["BeiJing", "ShangHai"], |
11 | movies: ["Hero", "King"] |
12 | } |
13 | } |
14 | } |
15 | ); |
- 向 username 为 Herry 的文档中,添加一个 hobby: {movies: [‘Ip Man 1’, ‘Ip Man 2’]}
1 | db.users.update( |
2 | { |
3 | username: "Herry" |
4 | }, |
5 | { |
6 | $set: { |
7 | hobby: { |
8 | movies: ["Ip Man 1", "Ip Man 2"] |
9 | } |
10 | } |
11 | } |
12 | ); |
- 查看喜欢电影为 Hero 的文档
1 |
|
2 |
|
3 | db.users.find({ |
4 | "hobby.movies": "Hero" |
5 | }); |
- 向 Herry 的文档中添加新电影 Ip Man 3
1 |
|
2 |
|
3 |
|
4 | db.users.update( |
5 | { |
6 | username: "Herry" |
7 | }, |
8 | { |
9 | $push: { |
10 | "hobby.movies": "Ip Man 3" |
11 | } |
12 | } |
13 | ); |
- 删除喜欢 BeiJing 的用户
1 | db.users.remove({ |
2 | "hobby.cities": "BeiJing" |
3 | }); |
- 删除 user 集合
1 | // 删除集合中所有的文档,效率不高 |
2 | db.users.remove({}) |
3 | // 更加方便的方法为 |
4 | db.users.drop() |
- 向 numbers 集合中插入 20000 条数据
1 |
|
2 | for (var i = 1; i <= 20000; i++) { |
3 | db.numbers.insert({ |
4 | num: i |
5 | }); |
6 | } |
7 |
|
8 |
|
9 | var arr = []; |
10 | for (var i = 1; i <= 20000; i++) { |
11 | arr.push({ num: i }); |
12 | } |
13 | db.numbers.insert(arr); |
14 |
|
15 |
|
- 查询 numbers 集合中 num 为 500 的文档
1 | db.numbers.find({ |
2 | num: 500 |
3 | }); |
4 |
|
5 |
|
6 |
|
7 | db.numbers.find({ |
8 | num: { |
9 | $eq: 500 |
10 | } |
11 | }); |
12 |
|
13 |
|
- 查询 numbers 中 num 大于 500 的文档
1 |
|
2 | db.numbers.find({ |
3 | num: { |
4 | $gt: 500 |
5 | } |
6 | }); |
7 |
|
8 |
|
9 | db.numbers.find({ |
10 | num: { |
11 | $gte: 500 |
12 | } |
13 | }); |
14 |
|
15 |
|
- 查询 numbers 中 num 小于 30 的文档
1 | db.numbers.find({ |
2 | num: { |
3 | $lt: 30 |
4 | } |
5 | }); |
- 查询 numbers 中 num 大于 40 小于 50 的文档
1 | db.numbers.find({ |
2 | num: { |
3 | $gt: 40, |
4 | $lt: 50 |
5 | } |
6 | }); |
- 查询 numbers 中 num 大于 19996 的文档
1 | db.numbers.find({ |
2 | num: { |
3 | $gt: 19996 |
4 | } |
5 | }); |
- 查看 numbers 集合中的前 10 条数据
1 | db.numbers.find().limit(10) |
- 查看 numbers 集合中的第 11 条到 20 条数据
1 | db.numbers.find().skip(10).limit(10) |
- 查看 numbers 集合中的第 21 条到 30 条数据
1 | db.numbers.find().skip(20).limit(10) |