常用命令

Show dbs //查看当前数据库 有那些
use chen //创建数据库 (或进入到这个数据库 )
db.user.insert({“username”:”zhangsang”,”age”:20 }) //插入数据
Show collections //查看集合(表)
Show users //查看当前数据库 是否有用户

连接数据库

命令cmd 输入 MongoDB 即可

创建数据库并插入数据

1 创建数据库

  1. Use chen //并没有完全的创建好,需要 1和2 都执行了才算


2 插入数据

  1. db.user.insert({"username":"zhangsang","age":20 })

查看表(集合)

1 查看所有数据库列表

  1. show dbs



2 首先进入到指定的数据库

  1. use chen


3 查看当前的数据库 有那些表(集合)

  1. show collections


4 查看表 有那些数据 (user 是3 查看出来的 表)

  1. db.user.find()

image.png

删除数据库 dropDatabase()

1 首先切换到当前的数据库

  1. use chen


2 开始删除

  1. db.dropDatabase() // 即可

image.png

删除表(集合) drop()

1 进入到当前数据库

  1. use chen
  2. show collections


2 开始删除

  1. //user 是表
  1. db.user.drop()

即可
image.png

插入(增加)数据 insert()

  1. db.user.insert({“username”:”zhangsang”,”age”:23});

查找数据 find()

1查询所有记录

  1. Db.user.find() //user 是表

相当于 select*from user ;

2查询去掉后的当前聚集集合中的某列的重复数据

Db.user.distinct(“username”);
会过滤掉name 中的相同数据
相当于 select distict name from user ;

3查询 age=25的数据

  1. db.admin.find({“age”:25})

4 查询age>22的数据(记录)

  1. db.admin.find({age:{$gt:22}})

相当于: select*form admin where age>22

5 查询age<22的数据(记录)

  1. db.admin.find({age:{$lt:22}})

相当于: select*form admin where age<22

6 查询age>=22的数据(记录)

  1. db.admin.find({age:{$gte:22}})

相当于: select*form admin where age<=22

7 查询age<=22的数据(记录)

  1. db.admin.find({age:{$lte:22}})

相当于: select*form admin where age<=22

8 查询age>=22并且 age<=30的数据(记录) 注意书写格式

  1. db.admin.find({age:{$gte:22 $lte:28}})

即可
image.png

9 模糊查询用于搜索 查询name中包含mongo 的数据

注意:数据量比较小的用这个, 数据量大的话,建议使用第三方模块 ,因为原生的性能不是很好

  1. db.admin.find({name:/mongo/})

相当于 %%
Select*from admin where name like ‘%mongo%’;
image.png

10 模糊查询用于搜索 查询name中以mongo 开头的数据

  1. db.admin.find({name:/^mongo/})

image.png

11查询指定列 name , age 的数据

有2个参数 : 第一个参数 可空或条件 第二个参数 显示指定名称的

  1. db.admin.find({},{name:1}) 只显示 name 这一列
  2. db.admin.find({},{age:1}) 只显示 age 这一列

image.png

  1. db.admin.find({age:{$gte:25}},{age:1}) 条件 只显示 age

image.png
当然 name 也可以用true 或false,
当用 true 的情况下和 name:1 效果一样,
如果用false就排除name,显示name以外的列信息

12显示指定列 name和age 数据, age>25

  1. db.admin.find({age:{$gt:25}},{name:true,age:true})
  2. db.admin.find({age:{$gt:25}},{name:1,age:1})

相当于 : select name,age from user where age>25;
image.png

13 按照年龄排序 1升序 -1降序

升序:

  1. db.admin.find().sort({age:1})


降序:

  1. db.admin.find().sort({age:-1})

image.png

14查询name=zhubajie,age=29

  1. db.admin.find({username:'zhubajie',age:29})

相当于: select*from user where name = ‘zhubajie’ and age=’22’ ;
image.png

15查询前3条数据

  1. db.admin.find().limit(3)

相当于 selecttop5 *from user

16查询3条后的数据

并包含第3条

  1. db.admin.find().skip(3)

17查询3-5条的数据

  1. db.admin.find().limit(5).skip(3)

可用于分页,
limit是pageSize ,
Skip 是第几页 *pageSize

18 or或者与 查询多条件

  1. db.admin.find({$or:[ {age:22}, {age:27} ]})

相当于: select*from user where age=22 or age=27;

  1. await cardMi.find({$or:[{user_id:'615038123ccf5eba3950e688'},{dev_id:'615038123ccf5eba3950e688'}]})

查询条件为user_id 或者 dev_id 都为615038123ccf5eba3950e688
image.png

19 查询第一条数据

  1. db.admin.findOne()

相当于 selecttop 1*from user;

20查询某个结果集的记录条数 统计数量

  1. db.admin.find({age:{$gte: 25}}).count()

image.png
如果要返回限制之后的记录数量 ,要使用count(true) 或者 count(非0)

  1. db.admin.find().skip(3).limit(5).count(true)

修改数据 update()

  1. db.admin.update({"username":"xiaogei"},{$set:{"age":28}})
  2. db.admin.upDtate({“username”:”xiaogei”},{$set:{“sex”:”男”}}) //sex字段不存在,则 增加该字段数据

第一个参数: 填条件
第二个参数:设置指定 新的内容
image.png

查找数学成绩是70 ,把年龄更改为30岁

  1. db.admin.update({"username":"lisi","age":12 },{$set:{"username":"lisi","age":33}})

可在花括号里书写

参数1 多种条件,用逗号隔开
参数2 修改多种或插入数据,用逗号隔开
image.png

注意: 错误的写法

  1. db.admin.update({“username”:”lisi”},{“username”:”小五”})

//如果你忘记书写 $set 它就会把整行都替换成 小五

完整替换

  1. db.admin.update({“username”:”lisi”},{“username”:”小五”})

批量修改

  1. db.admin.update({},{},{multi:true})
  2. db.admin.update({"age":12},{$set:{"username":"piliang"}},{multi:true})

删除数据 remove()

批量删除

参数: 条件的意思

  1. db.admin.remove({"username":"piliang"})

注意:如果remove({ }) 不书写条件,则会删除admin 表里的所有数据
image.png

批量删除只删开头第1条

  1. db.admin.remove({},{justOne:true}) //在第二条参数书写 justOne:true 即可
  2. db.admin.remove({“age”:{$gte:1}},{justOne:true});

image.png

批量生成数据for(){}

注意书写 格式 需要回车

  1. for(let i=1;i<100;i++){
  2. ... db.admin.insert({"username":"zhangs"+i,"age":i})
  3. ... };

image.png

查询与更新 findOneAndUpdate()

故名思意, 查询一条数据 返回 并更新这条数据

字段自增

  1. let newdata =await DATAUSER.findOneAndUpdate({source:1, count:0},{$inc:{count:1}}).lean()

自身字段条件比较

  1. let twodata = await DATAUSER.findOneAndUpdate({source:2, "$where":"this.count < this.maxcount"},{$inc:{count:1}}).lean()