1、创建名称为自己姓名拼音缩写的数据库。
use why
2、创建名为姓名拼音缩写+col的集合,如dugncol。
db.createCollection("whycol")
show collections
3、删除2中的集合,重新创建格式如dugncolnew的集合。
db.whycol.drop()
db.createCollection("whycolnew")
4、在3创建的集合中,插入10条文档数据,要求分别插入到class为“计算机161”和“计算机162”中,其它字段如下图所示:
db.whycolnew.find()
db.whycolnew.drop()
var temDay=1;
var temTime=new Date();
for(var i=1;i<=10;i++){
temDay=Math.round(Math.random()*100)%30;
if(temDay>9){
temTime=new Date('2015-09-'+temDay);
}
else{
temTime=new Date('2015-09-0'+temDay);
}
db.whycolnew.insert({
"class":("计算机16"+(Math.round(Math.random()*10)%2+1)),
"name":"zhangsan"+i,
"sex":Math.round(Math.random()*10)%2,
"age":Math.round(Math.random()*6)+3,
"hobby":["吃饭","睡觉","玩耍"],
"createDate":temTime
});
}
5、将3中集合中所有age为6的数据修改为age为21。
db.whycolnew.updateMany({'age':6},{$set:{'age':21}})
6、将name为zhangsan7的学生年龄修改为8岁,将兴趣爱好修改为跳舞和画画;
db.whycolnew.update({'name':'zhangsan7'},{$set:{'age':8,'hobby':['跳舞','画画']}})
7、追加zhangsan7的兴趣爱好为sing
db.whycolnew.update({'name':'zhangsan7'},{$push:{'hobby':'唱歌'}})
8、修改所有学生年龄增加一岁;
db.whycolnew.update({'age':{$gt:0}},{$inc:{'age':1}},false,true)
9、删除zhangsan7学生的sex属性;
db.whycolnew.update({'name':'zhangsan7'},{$unset:{'sex':1}})
10、删除所有4岁的学生。
db.whycolnew.deleteMany({'age':4})
11、删除第一位6岁的学生;
db.whycolnew.deleteOne({'age':6})
12、查询全部学生除_id字段之外的所有信息;
db.getCollection('whycolnew').find({},{_id:0})
13、查看所有年龄大于4岁并且小于10岁的学生姓名;
db.whycolnew.find({'age':{$gt:4,$lt:10}},{'name':1,'age':1,_id:0})
14、查看所有年龄大于4岁并且性别值为0的学生的姓名、性别、年龄;
db.whycolnew.find({'age':{$gt:4},'sex':0.0},{'name':1,'sex':1,'age':1})
db.whycolnew.find()
15、查看所有年龄是6岁或9岁的学生;
db.whycolnew.find({$or:[{'age':6},{'age':9}]})
16、查询所有“计算机161”班级下年龄为6或者性别为0的学生;
db.whycolnew.find({'class':'计算机161',$or:[{'age':6},{'sex':1.0}]})
17、查询所有兴趣中以“跳”字开头的学生;
db.whycolnew.find({'hobby':/^跳/})
18、查询所有兴趣字段为string的学生信息;
db.whycolnew.find({'hobby':{$type:'string'}})
19、查看年龄为第二大的学生信息;
db.whycolnew.find().limit(1).skip(1).sort({'age':-1})
20、为年龄字段创建升序索引;
db.whycolnew.createIndex({'age':1})
21、计算每个班级学生人数
db.whycolnew.aggregate([{$group:{_id:'$class',num:{$sum:1}}}])
22、计算每个班级男生(sex=0)人数;
db.whycolnew.aggregate([{$match:{'sex':0.0}},{$group:{_id:'$class',man_num:{$sum:1}}}])
23、按照如下脚本插入数据;添加完成后查询出,入学日期(createDate)大于2015-09-10的所有计算机162班女生每天入学总数,并且按照日期先后顺序排序。
db.whycolnew.aggregate([
{$match:{"createDate":{$gt:ISODate("2015-09-10T00:00:00Z")},"class":"计算机162","sex":1}},
{$group:{
_id:{$dateToString:{format:"%Y-%m-%d",date:"$createDate"}},
num:{$sum:1}
}
},
{$sort:{"_id":1}}
])