MongoDB常用操作示例

  1. MongoDB基本组成:
  • 数据库database: 数据库是一个仓库,在仓库中可以存放集合。
  • 集合collection: 集合类似于数组,在集合中可以存放文档。
  • 文档document: 文档是数据库的最小单位,我们存储和操作的内容都是文档。
  1. MongoDB基本指令:
  • show dbs 显示当前所有的数据库
  • use 数据库名 进入到指定数据库中
  • db 显示当前所在的数据库中
  • show collections 显示数据库中的所有集合
  1. 练习题:
//1.创建并进入itlike数据库 (数据库不存在时,use会创建该数据库
use itlike

//2.向数据库的colleges集合中插入六个文档(Html5, Java, Python, 区块链, K12, )  
db.colleges.insert([
  {name:'Html5'},
  {name:'Java'},
  {name:'Python'},
  {name:'区块链'},
  {name:'K12'},
  {name:'PHP', intro:'世界上最好的编程语言'},
])

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

//4.向数据库的colleges集合中插入一个文档(Golang)
db.colleges.insert({name:'Golang'})

//5.统计数据库colleges集合中的文档数量
db.colleges.find().count()

//6.查询数据库colleges集合中name为Html5的文档
db.colleges.find({name:'Html5'})

//7.向数据库colleges集合中的name为Html5的文档,添加一个intro属性,属性值为"打通全栈任督二脉!"
//默认只update第一个
db.colleges.update({name:'Html5'},{$set:{intro:'打通全栈任督二脉!'}})
//全update
db.colleges.update({name:'HTML5'},{$set:{intro:'打通全栈任督二脉!'}},false,true)

//update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
   ,
   ,
   {
     upsert: ,
     multi: ,
     writeConcern: 
   }
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。


//8.使用{name:"大数据"} 替换 name 为 "K12"的文档
db.colleges.replaceOne({name: 'K12'}, {name: '大数据'});

//9.删除name为PHP的文档的intro属性
db.colleges.update({name:'PHP'},{$unset:{intro:'世界上最好的编程语言'}});

//10.向name为Html5的文档中,添加一个classes:{base:["h5+c3","js","jQuery", "abc"] , core:["三大框架","node.js"]}
db.colleges.update({name:'Html5'},{$set:{classes:{base:["h5+c3","js","jQuery","abc"],core:["三大框架","node.js"]}}})

//11.查询有核心课程为 三大框架 的文档
db.colleges.find({'classes.core':'三大框架'})

//12.向name为Html5的文档中,添加一个新的核心课程 "微信小程序"
db.colleges.update({name:'Html5'},{$push:{'classes.core':'WeChat'}})  //如果有WeChat,仍会添加
db.colleges.update({name:'Html5'},{$addToSet:{'classes.core':'WeChat'}})  //如果有WeChat,不会添加;如果没有WeChat,会添加

//13.向name为Html5的文档中,删除基础课程"abc"
没有找到答案
db.colleges.remove({})    //删除集合里的所有文档
https://www.jianshu.com/p/ae86a6349655
https://www.cnblogs.com/chenmh/p/8144798.html
https://blog.csdn.net/qq_33206732/article/details/80050076
https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/

//14.删除colleges集合
db.colleges.drop()

//15.向集合中中插入10000个文档 
//多次插入 效率低
for(var i=1; i<=10000; i++){
    db.demos.insert({counter: i});
}
db.demos.find();
-----------------------------------
// 单次插入 效率高 性能好
var arr = [];
for(var i=1; i<=10000; i++){
    arr.push({counter: i})
}
db.demos.insert(arr);
db.demos.find();

//16.查询demos中counter为666的文档
db.demos.find({counter:666})

//17.查询demos中counter小于666的文档
db.demos.find({counter:{$lt: 666}})

//18.查询demos中counter大于666的文档
db.demos.find({counter:{$gt: 666}})

//19.查询demos中counter大于66小于666的文档
db.demos.find({counter:{$lt: 666,$gt: 66}})

//20.查看demos集合中的前10条数据
db.demos.find({counter:{$lt: 10}});

1-10       0
11-20     10
21-30     20
(页码 - 1)* 每页显示的条数
db.demos.find().skip(0).limit(10);

//21.查看demos集合中的第11条到20条数据
db.demos.find().skip(10).limit(10);

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

//23. 创建company数据库, 将itlike和section集合导入到数据库中
show dbs;
use company;

db.itlike.insert([
   {cno: "1001", cname: "HTML5学院"},
   {cno: "1002", cname: "Python学院"},
   {cno: "1003", cname: "Java学院"},
   {cno: "1004", cname: "Go学院"}
]);

db.section.insert([
  {name: "胡雪", job: "辅导员", wages: 10000.0, cno: "1001", bonus: 1688},
  {name: "赵乐乐", job: "讲师", wages: 20000.0, cno: "1001", bonus: 2600},
  {name: "冯璐璐", job: "辅导员", wages: 12000.0, cno: "1001"},
  {name: "赵晓雪", job: "辅导员", wages: 12000.0, cno: "1002", bonus: 1688},
  {name: "孙芙蓉", job: "讲师", wages: 13000.0, cno: "1002", bonus: 1288},
  {name: "胡霍恋", job: "辅导员", wages: 11000.0, cno: "1003", bonus: 2688},
  {name: "张思琪", job: "班主任", wages: 9000.0, cno: "1003"},
  {name: "王红叶", job: "辅导员", wages: 8000.0, cno: "1002", bonus: 1675},
  {name: "叶子奇", job: "高级讲师", wages: 30000.0, cno: "1001", bonus: 2345},
  {name: "高伟伟", job: "辅导员", wages: 17000.0, cno: "1002", bonus: 1345}
]);

//24.查询HTML5学院的所有老师
var cno=db.itlike.findOne({cname:'HTML5学院'}).cno;
db.section.find({cno: cno});

//25.查询Java学院的所有员工
var cno=db.itlike.findOne({cname:'Java学院'}).cno;
db.section.find({cno: cno});

//26.查询工资大于20000的员工
db.section.find({wages:{$gt: 20000}});

//27.查询工资在10000-25000之间的员工
db.section.find({$and:[{wages:{$gt:10000}},{wages:{$lt:25000}}]});

//28.查询工资小于10000或大于25000的员工
db.section.find({$or:[{wages:{$lt:10000}},{wages:{$gt:25000}}]});

//29.为所有薪资低于10000的员工增加工资1000元
db.section.updateMany({wages:{$lte:10000}},{$inc:{wages:1000}});




你可能感兴趣的:(MongoDB常用操作示例)