1.查询students集合,只返回一条数据。
db.students.findOne() db.students.find().limit(1) db.students.aggregate({$limit:1})
2.根据你查询出来的记录的结构,使用你自己的数据,构造一个文档,并将这个文档写入students集合。
var myself = { "name": "王小王-123", "gender": 1, "body": { "height": 166, "weight": 66 }, "phone": "1666666666", "sno": 2019814, "major": "应用数学", "grade": 2019, "class": 2, "courses": [ { "course": "分布式数据库原理与应用", "credit": 4, "score": 99 } ] } db.students.insert(myself)
3.根据你自己的记录数据,查询比你长得高或者和你一样高的学生记录 (比较运算符)
var 我的身高 = 166 var 查询条件 = {"body.height":{$gte:我的身高}} db.students.find(查询条件)
4.根据你自己的记录数据,查询体重和你相差不超过2kg的学生记录
var 上限 = 66+2 var 下限 = 66-2 var 查询条件 = {"body.weight":{$gte:下限,$lte:上限}} db.students.find(查询条件)
5.统计你所在专业的学生人数
db.students.count({major:"应用数学"})
6.列出所有课程的名称
db.students.distinct("courses.course")
7.将你所在班级的所有同学标记为同班同学(增加一个新字段:{'关系':'同班同学'}) UPDATE操作
var 同班同学 = {"major":"应用数学","grade":2019,"class":2} var 同班同学不包括我 = {"major":"应用数学","grade":2019,"class":2,"sno":{$ne:2019814}} var 同班同学不包括我们 = {"major":"应用数学","grade":2019,"class":2,"sno":{$nin:[2019814,2019813]}} db.students.find(同班同学) var 添加字段 = {$set:{'关系':'同班同学'}} db.students.updateMany(同班同学,添加字段) db.students.find({'关系':'同班同学'})
8.找到你班上身高最高的3名同学,并删除这些记录
var 同班同学 = {"major":"应用数学","grade":2019,"class":2} var 同班同学 = {'关系':'同班同学'} // 第7题的结果 var 找同班同学 = {$match:同班同学} var 按身高从大到校排序 = {$sort:{"body.height":-1}} var 取头三个 = {$limit:3} var res = db.students.aggregate([找同班同学,按身高从大到校排序,取头三个]) db.students.delete({sno:{$in:[2016000242,2016000181,17059434737]}})
这样的命令比较的不够智能,所以我重写了一个JavaScript代码进行迭代删除,不需要自己呆板的获取前面三个数据的名称,如下:
//首先找到你班上身高最高的3名同学: var 查询条件={"major": "应用数学","grade": 2019,"class": 2} db.students.find(查询条件).sort({'body.height':-1}).limit(3) //循环删除 var 查询条件={"major": "应用数学","grade": 2019,"class": 2} var 返回结果 =db.students.find(查询条件,{_id:0,name:1}).sort({'body.height':-1}).limit(3) for(var i=0; i<返回结果.length(); i++) { db.students.remove(返回结果[i]) print(返回结果[i]); }; //再次查询,记录已删除 var 查询条件={"major": "应用数学","grade": 2019,"class": 2} db.students.find(查询条件).sort({'body.height':-1}).limit(3)