MongoDB增删改查操作
Posted 冉姑娘❤️
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB增删改查操作相关的知识,希望对你有一定的参考价值。
删除数据库和数据集合(表)
db.dropDatabase()
db.grade.drop()
插入数据记录
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;
db.student.find({‘name‘:‘zhangsan‘});
相当于: select * from student where name = zhangsan;
db.student.distinct("name");
会过滤掉 name 中的相同数据 相当于:select distict name from student;
db.student.find({‘age‘:34});
相当于: select * from student where age = 34;
db.student.find({‘age‘:{$gt:34}})
相当于:select * from student where age >34;
db.student.find({‘age‘:{$lt:34}})
相当于:select * from student where age <34;
db.student.find({‘age‘:{$gte:34}})
相当于:select * from student where age >=34;
db.student.find({‘age‘:{$lte:34}})
相当于:select * from student where age <=34;
db.student.find({‘age‘:{$gte:20,$lte:40}});
db.student.find({‘name‘:/a/});
//相当于%%
select * from student where name like ‘%a%‘;
db.student.find({‘name‘:/^j/})
相当于 select * from student where name like ‘j%‘;
db.student.find({‘name‘:/k$/})
相当于 select * from student where name like ‘%k‘;
db.student.find({‘age‘:{$gte:34}},{name:1});
相当于:select name from student where age >=34;
db.student.find().sort({age:1}); 升序 db.student.find().sort({age:-1}); 降序
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
db.userInfo.find({$or: [{age: 22}, {age: 25}]}); 相当于:select * from userInfo where age = 22 or age = 25;
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);
修改数据记录
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。
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,则只删除一个文档。
- writeConcern :(可选)抛出异常的级别。
db.student.remove({age: 18});
以上是关于MongoDB增删改查操作的主要内容,如果未能解决你的问题,请参考以下文章