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}); 

 

原文地址:https://www.cnblogs.com/ranyihang/p/12604758.html