• MongoDB增删改查操作


    删除数据库和数据集合(表)

    删除数据库,删除当前所在的数据库
    db.dropDatabase()
    删除集合(表)
    db.grade.drop()
    如果当前集合存在则直接删除,并返回 true ,否则返回false
     

    插入数据记录

    插入数据
    插入一条数据,返回值是插入的id
    db.student.insertOne({'name':'zhangsan','age':30});
    插入数据,返回值是插入的数量
    db.student.insert({'name':'zhangsan','age':40});
    插入多条文档数据
    db.student.insertMany([{'name':'李四','age':34},{'name':'赵六','age':66}])
    注意:里面是数组包对象的格式

    查找数据记录

    查找所有记录

    db.userInfo.find();  
    相当于:select* from userInfo; 
    查询name=张三的数据
    db.student.find({'name':'zhangsan'});
    相当于: select * from student where name = zhangsan;
    查询去除重复后的数据 distinct
    db.student.distinct("name");
    会过滤掉 name 中的相同数据 相当于:select distict name from student;
    查询age=34
    db.student.find({'age':34});
    相当于: select * from student where age = 34;
    如果有,直接返回结果;没有则为空
    查看age>34
    db.student.find({'age':{$gt:34}})
    相当于:select * from student where age >34;
    查看age<34
    db.student.find({'age':{$lt:34}})
    相当于:select * from student where age <34;
    查看 age>=34
    db.student.find({'age':{$gte:34}})
    相当于:select * from student where age >=34;
    查看 age<=34
    db.student.find({'age':{$lte:34}})
    相当于:select * from student where age <=34;
    查看 age >=20 并且 age <= 40
    db.student.find({'age':{$gte:20,$lte:40}});
    模糊查询-查询名称中带有 a 的
    db.student.find({'name':/a/});
    //相当于%%
    select * from student where name like '%a%';
    查询名称是以j开头的 ^
    db.student.find({'name':/^j/})
    相当于 select * from student where name like 'j%';
    查询名称是以k结尾的 $
    db.student.find({'name':/k$/})
    相当于 select * from student where name like '%k';
    查询指定列,查询age,1表示使用当前这个字符
    db.student.find({'age':{$gte:34}},{name:1});
    相当于:select name from student where age >=34;
    升序和降序 sort
    db.student.find().sort({age:1}); 升序
    db.student.find().sort({age:-1}); 降序
    查询指定条数 limit
    db.student.find().limit(3);
    相当于 select * from student limit(5);
    按照升序排序,获取前三条数据
    db.student.find().sort({age:1}).limit(3);

    查询在 3-5 之间的数据

    db.student.find().limit(5).skip(3);  
    可用于分页,limit 是 pageSize,skip 是第几页*pageSize 
    or 与查询
    db.userInfo.find({$or: [{age: 22}, {age: 25}]});  
    相当于:select * from userInfo where age = 22 or age = 25; 
    findOne 查询第一条数据
    db.student.findOne();
    db.student.find().limit(1);
     

    查询某个结果集的记录条数 统计数量

    db.student.find({age: {$gte: 25}}).count();  
    相当于:select count(*) from userInfo where age >= 20;  
    如果要返回限制之后的记录数量,要使用 count(true)或者 count(非 0)  db.student.find().skip(5).limit(2).count(true);  
    mongodb整个操作,跟js非常相似,使用的都是 链式操作 + 方法 + 参数值
     

    修改数据记录

    update() 方法用于更新已存在的文档
    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )

    query : update的查询条件,类似sql update查询内where后面的。
    update : update的对象和一些更新的操作符(如,,inc…)等,也可以理解为sql update查询内set后面的
    upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    writeConcern :可选,抛出异常的级别。

    将jack的年龄年龄更改为 16 岁:

    db.student.update({"name":"jack"},{$set:{"age":16}}); 

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

      nMatched  相配的

      nUpserted 插入的

      nModified 修改的

    将zhangsan的年龄修改为18

    db.student.update({"name":"zhangsan"},{$set:{"age":18}}); 

    以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

    multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    db.student.update({"name":"jack"},{$set:{"age":16}} ,{multi: true}); 

    修改王五的名称为‘王中王’,年龄为21

    db.student.update({"name":"王五"},{"name":"王中王","age":21}); 

    完整替换,不出现$set 关键字了

    db.student.update({"name":"小明"},{"name":"大明","age":16}); 
    db.users.update({name: 'lisi'}, {$inc: {age: 30}}, false, true); 
    相当于:update users set age = age + 30 where name = 'Lisi'; 

    在3.2版本开始,MongoDB提供以下更新集合文档的方法:

    db.collection.updateOne() 向指定集合更新单个文档
    db.collection.updateMany() 向指定集合更新多个文档

    更新单个文档

    db.student.updateOne({"name":"李四"},{$set:{"age":"28"}})

    更新多个文档

    db.student.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})

    删除数据

    remove() 方法的基本语法格式如下所示:

    db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )

    参数说明:

    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档。默认为false,可以删除多条
    • writeConcern :(可选)抛出异常的级别。
    db.student.remove({age: 18}); 

     

  • 相关阅读:
    面向对象编程总结Python
    垃圾收集器与内存分配策略
    自定义异常、异常处理注意点
    关于线程【一】——线程创建、停止、interrupted()和isInterrupted()区别
    Java内存区域
    HotSpot虚拟机对象
    异常——try、catch、finally、throw、throws
    关于线程【二】——线程同步和异步
    fillder代理调试
    新鲜出炉的Asp.Net MVC电子书
  • 原文地址:https://www.cnblogs.com/ranyihang/p/12604758.html
Copyright © 2020-2023  润新知