node.js中的mongodb的学习记录:

//1.创建并进入it_like数据库
use itlike
db

//2.向数据库的colleges集合中插入六个文档(Html5, Java, Python, 区块链, K12, <PHP, "世界上最好的编程语言">)  
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属性,属性值为"打通全栈任督二脉!"
db.colleges.update({name:"Html5"},{$set:{intro:"打通全栈任督二脉!"}});

//8.使用{name:"大数据"} 替换 name 为 "K12"的文档 
db.colleges.replaceOne({name:"K12"},{name:"大数据"});
        
//9.删除name为PHP的文档的intro属性
db.colleges.update({name:"PHP"},{$unset:{intro:1}});

//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"]}}});
db.colleges.find();

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

//12.向name为Html5的文档中,添加一个新的核心课程 "微信小程序"
//$push 用于向数组中添加一个新的元素
//$addToSet 向数组中添加一个新元素 , 如果数组中已经存在了该元素,则不会添加
db.colleges.update({name:"Html5"},{$push:{"hobby.core":"微信小程序"}});
db.colleges.update({name:"Html5"},{$addToSet:{"hobby.core":"全栈项目开发"}});
db.colleges.find();

//13. 删除基础课程为"abc"的文档
db.colleges.remove({"classes.base":"abc"});

//14.删除colleges集合
db.colleges.remove({});
db.colleges.drop();
show dbs;

//15.向集合中中插入10000个文档 
// 方式一
for(var i=1 ; i<=10000 ; i++){
    db.demos.insert({counter:i});
}
db.demos.find()
db.demos.remove({});

// 方式二
var arr = [];
for(var i=1 ; i<=10000 ; i++){
    arr.push({counter:i});
}
db.demos.insert(arr);
db.demos.find()
//16.查询demos中counter为168的文档
db.demos.find({counter:168})

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

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

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

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

//21.查看demos集合中的第11条到20条数据
/*
    分页 每页显示10条
        1-10     0
        11-20    10
        21-30    20
        。。。
        
        skip((页码-1) * 每页显示的条数).limit(每页显示的条数);
        
    skip()用于跳过指定数量的数据    
    
    MongoDB会自动调整skip和limit的位置
*/
db.demos.find().skip(10).limit(10);

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

db.demos.find().limit(10).skip(10);
//1.创建并进入it_like数据库
use it_like

//2.向数据库的colleges集合中插入六个文档(Html5, Java, Python, 区块链, K12, <PHP, "世界上最好的编程语言">)  
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属性,属性值为"打通全栈任督二脉!"
db.colleges.update({name:"Html5"},{$intro:{address:"打通全栈任督二脉!"}});

//8.使用{name:"大数据"} 替换 name 为 "K12"的文档
db.colleges.replaceOne({name:"K12"},{username:"大数据"});    
    
//9.删除name为PHP的文档的intro属性
db.colleges.update({name:"PHP"},{$unset:{intro:"世界上最好的编程语言"}});


//10.向name为Html5的文档中,添加一个classes:{base:["h5+c3","js","jQuery", "abc"] , core:["三大框架","node.js"]}
//MongoDB的文档的属性值也可以是一个文档,当一个文档的属性值是一个文档时,我们称这个文档叫做 内嵌文档
db.colleges.update({name:"Html5"},{$set:classes:{base:["h5+c3","js","jQuery", "abc"], core:["三大框架","node.js"]}}});
db.colleges.find();

//11.查询有核心课程为 三大框架 的文档
//MongoDB支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过.的形式来匹配
//如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号 
db.colleges.find({'classes.core':"三大框架"});

//14.向name为Html5的文档中,添加一个新的核心课程 "微信小程序"
//$push 用于向数组中添加一个新的元素
//$addToSet 向数组中添加一个新元素 , 如果数组中已经存在了该元素,则不会添加
db.colleges.update({name:"Html5"},{$push:{"hobby.core":"微信小程序"}});
db.colleges.update({name:"Html5"},{$addToSet:{"hobby.core":"微信小程序"}});
db.colleges.find();

//15.向name为Html5的文档中,删除基础课程"abc"
db.colleges.remove({"classes.base":"abc"});

//16.删除user集合
db.colleges.remove({});
db.colleges.drop();

show dbs;

//17.向集合中中插入10000个文档 7.2s
for(var i=1 ; i<=10000 ; i++){
    db.demos.insert({num:i});
}

db.demos.find()

db.demos.remove({});


//0.4s
var arr = [];

for(var i=1 ; i<=10000 ; i++){
    arr.push({num:i});
}

db.demos.insert(arr);

 

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

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}
]);

db.section.find();
db.itlike.find();

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

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

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

//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}});
db.section.find();