Mongodb基础使用

88 阅读3分钟

Mongodb

Mongodb 是一个 NoSql 的数据库 Mongodb 是一个文档型数据库 数据库是指一个存储数据的仓库,数据库可以使我们完成对数据持久化的操作 Mongodb 数据库中存储的数据的基本单元就是文档,所谓文档就是一个JSON Mongodb 中的JSON称为 BSON, 比普通的 json 的功能要更加强大 Mongodb 数据库使用的 javascript 来进行操作的,在 Mongodb 含有一个对 ES 的标准引擎。

数据库安装

数据库操作

  • 启动服务器

    • mongod --dbpath 路径 --port 端口号
  • 启动客户端

    • mongosh
  • Mongodb 的 CURD 基本操作

    • use 数据库: 进入指定的数据库
    • show dbs: 显示所有的数据库
    • show collections: 显示数据库中所有集合
    • db: 显示当前所在的数据库
  • 插入文档操作

    • db.colloection.insert(): 可以像集合中插入一个或多个文档
      • db.stu.insert({name: "小明", age: 12, sex: "男"})
    • db.collection.insertOne(): 向集合中插入一个文档
    • db.collection.insertMany(): 向集合中插入多个文档
  • 查询文档的操作

    • db.colloection.find(): 可以根据条件从集合中查询所有符合条件的文档, 返回一个数组
    • db.colloection.findOne(): 查询第一条符合条件的文档,返回一个对象
    • db.colloection.find().count(): 查询符合条件的文档数量
  • 修改文档的操作

    • db.colloection.update(): 可以修改,替换集合中的一个或多个文档
    • db.colloection.updateOne(): 修改集合中的一个文档
    • db.colloection.updateMany(): 修改集合中的多个文档
    • db.colloection.replaceOne(): 替换集合中的一个文档
  • 删除集合中的文档

    • db.collection.remove(): 删除集合中的一个或多个文档
    • db.collection.deleteOne(): 删除集合中的一个文档
    • db.collection.deleteMany(): 删除集合中的多个文档
    • db.collection.remove({}): 清空一个集合
    • db.collection.drop(): 删除一个集合
    • db.dropDatabase(): 删除一个数据库
  • 操作集合中的操作符

    • $set: 添加对应属性
    • $unset(1): 删除属性
    • $push: 添加数组元素,可以是重复的
    • $addToSet: 不重复添加数组元素
    • $gt:
    • $lt
    • $eq
    • $lte
    • $gte
    • skip limit 查询条件
  • 基础练习

题目:
  1.进入my_test数据库
     use my_test
  2.向数据库的user集合中插入一个文档
    db.user.insert({username:"sunwukong"})

  3.查询user集合中的文档
    db.user.find()

  4.向数据库的user集合中插入一个文档  
    db.user.insert({username:"zhubajie"})  

  5.查询数据库user集合中的文档 
    db.user.find()

 6.统计数据库user集合中的文档数量
    db.user.find().count()

 7.查询数据库user集合中username为sunwukong的文档
    db.user.find({username:"sunwukong"})

 8.向数据库user集合中的username为sunwukong的文档,添加一个address属性,属性值为huaguoshan
    db.user.update({username:"sunwukong"},{$set:{address:"huaguoshan"}})

9.使用{username:"tangseng"} 替换 username 为 zhubajie的文档
    db.user.update({username:"tangseng"},{username:"zhubajie"})
    db.user.update({username:"zhubajie"},{username:"tangseng"})
    db.user.find()
    db.user.replaceOne({username:"tangseng"},{username:"tangseng"})
    db.user.find()

10.删除username为sunwukong的文档的address属性
    db.user.update({username:"sunwukong"},{$unset:{address:1}})
    db.user.find()
    
11.username为sunwukong的文档中,添加一个hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}
    db.user.update({username:"sunwukong"},{$set:{
    hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}
    }})

12.向username为tangseng的文档中,添加一个hobby:{movies:["A Chinese Odyssey","King of comedy"]}
    db.user.update({username:"sunwukong"},{$set:{
    hobby:{movies:["A Chinese Odyssey","King of comedy"]}
    }})
    db.user.find()

13.查询喜欢电影hero的文档
    db.user.find({'hobby.movies':"hero"})
    db.user.find()
    
14.向tangseng中添加一个新的电影Interstellar
    db.user.update({username:"tangseng"},{$push:{"hobby.movies":"Interstellar"}})
    $push 表示的是插入一个元素到数组(重复的也继续插入)
    db.user.update({username:"tangseng"},{$addToSet:{"hobby.movies":"Interstellar"}})
    $addToSet //插入一个元素去数组不重复的

15.删除喜欢beijing的用户
    db.users.remove({"hobby.cities":"beijing"});
 
16.删除user集合
    db.users.remove({});
    db.users.drop();
    show dbs;

17.向numbers中插入20000条数据



18.查询numbers中num为500的文档

    db.numbers.find({num:500})

19.查询numbers中num大于5000的文档
    db.numbers.find({num:{$gt:500}});
    db.numbers.find({num:{$eq:500}});


20.查询numbers中num小于30的文档
    db.numbers.find({num:{$lt:30}});

21.查询numbers中num大于40小于50的文档
    db.numbers.find({num:{$gt:40 , $lt:50}});

22.查询numbers中num大于19996的文档
    db.numbers.find({num:{$gt:19996}});

23.查看numbers集合中的前10条数据
    db.numbers.find({num:{$lte:10}});
    limit()设置显示数据的上限
    db.numbers.find().limit(10);
    在开发时,我们绝对不会执行不带条件的查询
    db.numbers.find();
24.查看numbers集合中的第11条到20条数据
    /*
        分页 每页显示10条
            1-10     0
            11-20    10
            21-30    20
            。。。
            skip((页码-1) * 每页显示的条数).limit(每页显示的条数);
        skip()用于跳过指定数量的数据   
        MongoDB会自动调整skip和limit的位置
    */
    db.numbers.find().skip(10).limit(10);

25.查看numbers集合中的第21条到30条数据
    db.numbers.find().skip(20).limit(10);
    db.numbers.find().limit(10).skip(10);

26.将dept和emp集合导入到数据库中
    db.dept.find()
    db.emp.find()

27.查询工资小于2000的员工
    db.emp.find({sal:{$lt:2000}});
    
28.查询工资在1000-2000之间的员工
    db.emp.find({sal:{$lt:2000 , $gt:1000}});

29.查询工资小于1000或大于2500的员工
    db.emp.find({$or:[{sal:{$lt:1000}} , {sal:{$gt:2500}}]});

30.查询财务部的所有员工
    //(depno)
    var depno = db.dept.findOne({dname:"财务部"}).deptno;
    db.emp.find({depno:depno});
    
31.查询销售部的所有员工
    var depno = db.dept.findOne({dname:"销售部"}).deptno;
    db.emp.find({depno:depno});
    
32.查询所有mgr为7698的所有员工
    db.emp.find({mgr:7698})

33.为所有薪资低于1000的员工增加工资400元
    db.emp.updateMany({sal:{$lte:1000}} , {$inc:{sal:400}});
    db.emp.find()