天天看点

MongoDB中数据库的操作(增删改查)

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)      

每文一语