7

课时41-课时45笔记

 5 years ago
source link: https://studygolang.com/articles/15987?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

课时41

delete()删除

删除一个集合:

db.collection.deleteOne()

删除一条数据

db.collection.deletMany();

删除全部(多个)

remove()删除

db.student.remove({name:"李四"});

删除所有的name:李四的数据

db.student.remove({sex:"男"},true);
只删除一条sex:男的数据 仅删除一条

db.student.remove({});
删除全部

数据库假删除:

db.student.insert([
    {name:"张三",content:"今天心情好",isDel:0},
    {name:"张三",content:"今天心情一般",isDel:0},
]);
uEZFvuR.png!web

b21d2b7140562e21fcbe9c168e02da9.png

用户增加两条数据,但只保留后一条,删除前一条,这时候用到假删除 ,在添加数据时加上一个字段 isDel:0

所以当用户删除数据时候 执行的不是remove方法而是update方法

db.student.update({"_id" : ObjectId("5bd6a46f1eb7a22fa07cb382")},{
    $set:{
      isDel:1
    }
});
u2EB3qQ.png!web

98cf763807e662cd724e6d65f1638fb.png

isDel:0

是表示用户没有删除 为1是表示用户已经删除

所以在查询的时候要筛选name和isDel条件即可

db.student.find({name:"张三",isDel:0});

查询到用户没有删除的数据:

RNbMB3A.png!web

121b7fc4d6f40af1de843359cdbf585.png

然后就可以实现假删除了。

课时42

MongoDB数据库联系一

  1. 创建并进入it 666数据库
    use it_666 //创建
    db //进入、显示库名
  2. 向数据库的colleges集合中插入六个文档(Html5, Java,Python,区块链,K12, <PHP,“世界上最好的编程语言">)
db.colleges.insert([
 {name:"Html5"},
 {name:"Java"},
 {name:"Python"},
 {name:"区块链"},
 {name:"K12"},
 {name:"PHP",intro:"世界上最好的编程语言"}
]);
  1. 查询colleges集合中的文档

    db.colleges.find();
    E7Ffamy.png!web

    41dd1385029981699a709bb0a0cd64c.png

    4.向数据库的olleges集合中插入一个文档(Golang)

    db.colleges.insert({name:"Golang"});
    2IfeY3v.png!web

    c94fb71b7bab9c6afe0b6f9c055d389.png

5统计数据库colleges集合中的文档数量

db.colleges.find().length();
3UFfMzj.png!web

1a566a20c2b7e570cf70f18622a9a85.png

6.查询数据库colleges集合中name为HtmI5的文档

db.colleges.find({name:"Html5"});
vYJVRrM.png!web

19675cec3a78139638a97a7995ed4b6.png

7.向数据库colleges集合中的name为HtmI5的文档,添加一个intro属性,属性值为打通全栈任督二脉!"

db.colleges.update({name:"Html5"},{$set:{intro:"打通全栈任督二脉!"}});
naEBRvi.png!web

dd9196d43a3406f89ab993ca0e80431.png

8.使用{name:"大数据"}替换name为"K12"的文档

db.colleges.update({name:"K12"},{$set:{name:"大数据"}});

RNbQbyM.png!web

[图片上传中...(f0814b43bd13b51faec23e840ff952a.png-fc4ff4-1540800474857-0)]

  1. 删除name为PHP的文档的intro属性

    db.colleges.update({name:"PHP"},{$unset:{intro:1}});
    Rnm22av.png!web

    daf75db6c0433e0e6b2c0794fff7bd4.png

课时43

  1. 向name为HtmI5的文档中,添加一个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"]}}});

YJvyaqQ.png!web

816f34ecdaca808e23507270253fda3.png

  1. 查询有核心课程为三大框架的文档
    db.colleges.find({"classes.core":"三大框架"});
    bAJneiF.png!web

    9a8e009987e1558ccfb3f05d103f38b.png

    内嵌上级的可以通过点语法即可
  2. 向name为HtmI5的文档中,添加-个新的核心课程"微信小程序”
    数据更新操作符
    $addToSet 加一个值到数组中去,只有当这个值不在数组内才增加
    $push 添加到数组尾部
    db.colleges.update({name:"Html5"},{$push:{"classes.core": "微信小程序"}});
iQBfAvF.png!web

67ee1a065e420fccf713fde32575cd0.png

  1. 向name为Html5的文档中,删除基础课程abc"
    db.colleges.update({name:"Html5"}, {$pop:{"classes.base": "abc"}});
  2. 删除colleges集合
    db.colleges.remove({});

课时44

批量数据的操作和修改

  1. 向集合中中插入10000个文档
var arr= [];
for(var i=0;i<10000;i++){
   arr.push({counter:i});
}
db.demos.insert(arr);
db.demos.find();
  1. 查询demos中counter为666的文档
    db.demos.find({counter:666});
  2. 查询demos中counter小于66的文档
    db.demos.find({counter:{$lt:666}});
  3. 查询demos中counter大T666的文档
    db.demos.find({counter:{$gt:666}});
  4. 查询demos中counter大于66小于666的文档1120查吉demos集合中的前10余数据
    db.demos.find({counter:{$gt:66, $lt:666}});
  5. 查石demos集合中的第1字到20条数据
    db.demos.find().limit(10);
  6. 查春demos集合中的第2 1条到30条数据 分页功能 skip从多少条开始 limit每次查询多少条
db.demos.find().skip(0).limit(10);//第一页 从0条开始 每查询10条
db.demos.find().skip(10).limit(10);//第二页 从10条开始 每查询10条
db.demos.find().skip(20).limit(10);//第三页 从20条开始 每查询10条

课时45

  1. 创建company数据库将it666和section集合导入到数据库中
  • 数据库导出:
    Export Collection Data...
  • 数据库导入:
    Import data Form File...
  1. 查询HTML5学院的所有老师

    多集合查找

    con ----------------职能部门编号

var cno = db.it666.findOne({cname: "html5学院"}).cno;//获取it666中cname是html学院字段的 cno
db.section.find({cno: cno});//查找section 的cno是 1001的字段
  1. 查询Java学院的所有员工

    同上 多表查询

var cno = db.it666.findOne({cname: "Java学院"}).cno;//获取it666中cname是Java学院字段的 cno
db.section.find({cno: cno});//查找section 的cno是 1003的字段
  1. 查询工资大于15000的员工
    db.section.find({wages:{$gt:15000}})
  2. 查询工资在10000 15000之间的员工
db.section.find({wages:{$gt:10000,$lt:15000}})
/*$gte 大于等于  $lte  小于等于*/
  1. 查询工资小于10000或大于25000的员工
db.section.find({$or:[//$or 或者
  {wages: {$lt: 10000}},
  {wages: {$gt: 20000}}
]})
  1. 为所有薪资低于10000的员工增加资1000元

    $inc 为选择的value值自增

db.section.updateMany({wages:{$lt: 10000}}, {$inc:{wages: 1000}})

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK