MOngoDBdelete语句delete()delete删除一个集合db.collection.deleteOne()删除多个集合db.collection.deletMany();remove()删除所有名字:李四的数据db.student.remove({name:"李四"});只删除一个性别:男性数据只删除一个db.student.remove({sex:"male"},true);删除所有db.student.remove({});数据库被误删。有时候用户删除操作的时候,需求是这样的。只是隐藏了这条数据,并没有真正从数据库中删除。这时候就用到了假删除。例如,这是张三的两条微博:db.student.insert([{name:"张三",content:"今天心情不错",isDel:0},{name:"张三",content:"我今天心情正常",isDel:0},]);用户添加了两条数据,但只保留后一条,删除前一条。此时使用假删除,在添加数据时,添加一个字段isDel:0所以当用户删除数据时,update方法不是remove方法而是update方法db.student.update({"_id":ObjectId("5bd6a46f1eb7a22fa07cb382")},{$set:{isDel:1}});当isDel:0表示用户没有被删除,1表示用户已经被删除,所以需要过滤name和查询时的isDel条件db.student.find({name:"张三",isDel:0});查询用户未删除的数据:即可实现误删除。批量数据操作修改向集合中插入10000个文档vararr=[];for(vari=0;i<10000;i++){arr.push({counter:i});}db.demos.insert(arr);db.demos.find();查询demos中计数器为666的文档db.demos.find({counter:666});查询demos中计数器小于66的文档db.demos.find({counter:{$lt:666}});查询demo中计数器大于T666的文档db.demos.find({counter:{$gt:666}});查询demos中counter大于66和小于666的文档1120Chajidemoscollectiondb.demos.find({counter:{$gt:66,$lt:666}})中的前10条数据查看stonedemos集合db.demos.find()中的第1到20条数据。限制(10);检查春季演示集合中的第21到第30个项目。数据分页功能skip从多少条开始限制每次查询多少条。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条集合中的文档一对一(onetoone)查询:例如:人和身份证夫妻一张-to-many(一对多):例如:父母和孩子的用户和物品多对多(manytomany):例如:老师和学生的一对一体现为嵌入文档的形式,//一对一db.aAndb.insert([{name:"杨果",wife:{name:"小龙女",sex:"女"},sex:"男"},{name:"杨果",wife:{name:"小龙女",sex:"女"},sex:"男"}])db.aAndb.find();一对多以嵌入文档的形式或者以集合的形式实现//微博、微博评论等一对多//添加微博db.weibo.insert([{weibo:"世界那么大,我想去看看"},{weibo:"我想成为一名web开发者!!!"}])db.weibo.find();添加评论db.comments.insert([{weibo_id:ObjectId("5bdd89e06a5e78f4cfc2b9c8"),list:["那你有钱吗","你一个人吗??你要去哪里??","加油!!"]},{weibo_id:ObjectId("5bdd89e06a5e78f4cfc2b9c9"),list:["那你要学HTML","那你要学css","加油!!]}]);db.comments.find();查询一对多varweibo_id=db.weibo.findOne({"weibo":"世界那么大,我想去看看"})._id;db.comments.find({weibo_id:微博id});多对多关系例如:学生和教师可以通过多文档关联,//多对多教师《------》students//插入教师集合db.teachers.insert([{name:"Chineseteacher",teacher_id:1,student_id:[1001,1002,1003]},{name:"数学老师",teacher_id:2,student_id:[1001,1002,1003]},{name:"英语老师",teacher_id:3,student_id:[1001,1002,1003]}])db.teachers.find();//插入学生集合db.students.insert([{name:"小明",student_id:1001,teacher_id:[1,2,3]},{name:"小红",student_id:1002,teacher_id:[1,2,3]},{name:"小刚",student_id:1003,teacher_id:[1,2,3]}])db.students.find();db.teachers.find();排序和索引排序:查询文档时,默认按照_id的值排序(升序)sort()可以用来指定文档的排序规则,sort()需要传递一个对象来指定文档的排序规则,其中1表示升序,-1表示降序limitskip排序的顺序可以任意改变,它会在运行时自动调整。我不希望它默认按id排序我希望它按薪水排序//按薪水升序排序db.section.find().sort({wages:1});//排序在先salary升序遇到相同则按id升序排序db.section.find().sort({wages:1},{_id:-1});索引:显示字段中的部分内容或提取字段中的部分内容。查询时,可以使用第二个参数设置查询的结果投影索引:find({查询条件},{检索范围(1显示0隐藏)})注:如果不设置_id,默认为1(display)并且可以手动隐藏db.section.find({},{name:1});//只显示姓名和工资字段`db.section.find({},{name:1,_id:0,工资:1});`
