当前位置:Gxlcms > 数据库问题 > MongoDB增删改查操作

MongoDB增删改查操作

时间:2021-07-01 10:21:17 帮助过:4人阅读

name:zhangsan,age:30});

 

插入数据,返回值是插入的数量
  1. db.student.insert({<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:<span style="color: #800000;">‘</span><span style="color: #800000;">zhangsan</span><span style="color: #800000;">‘</span>,<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:<span style="color: #800080;">40</span>});

 

插入多条文档数据
  1. db.student.insertMany([{<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:<span style="color: #800000;">‘</span><span style="color: #800000;">李四</span><span style="color: #800000;">‘</span>,<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:<span style="color: #800080;">34</span>},{<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:<span style="color: #800000;">‘</span><span style="color: #800000;">赵六</span><span style="color: #800000;">‘</span>,<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:<span style="color: #800080;">66</span>}])
注意:里面是数组包对象的格式

 

查找数据记录

查找所有记录

  1. <span style="color: #000000;">db.userInfo.find();
  2. 相当于:</span><span style="color: #0000ff;">select</span>* <span style="color: #0000ff;">from</span> userInfo;

 

查询name=张三的数据
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:<span style="color: #800000;">‘</span><span style="color: #800000;">zhangsan</span><span style="color: #800000;">‘</span><span style="color: #000000;">});<br></span>相当于: <span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where name = zhangsan<span class="hljs-number">;</span></span></span></span>

 

查询去除重复后的数据 distinct
  1. db.student.distinct(<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>);<br>会过滤掉 name 中的相同数据 相当于:<span class="hljs-keyword">select distict name <span class="hljs-keyword">from student; </span></span>

 

查询age=34
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:<span style="color: #800080;">34</span>});<br>相当于: <span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where age = 34<span class="hljs-number">; </span></span></span></span>
如果有,直接返回结果;没有则为空

 

查看age>34
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:{$gt:<span style="color: #800080;">34</span>}})<br>相当于:<span class="hljs-operator"><span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where age >34<span class="hljs-number">;</span></span></span></span></span>

 

查看age<34
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:{$lt:<span style="color: #800080;">34</span>}})
  1. 相当于:<span class="hljs-operator"><span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where age <34<span class="hljs-number">;</span></span></span></span></span>

 

查看 age>=34
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:{$gte:<span style="color: #800080;">34</span>}})
  1. 相当于:<span class="hljs-operator"><span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where age >=34<span class="hljs-number">;</span></span></span></span></span>

 

查看 age<=34
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:{$lte:<span style="color: #800080;">34</span>}})
  1. 相当于:<span class="hljs-operator"><span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where age <=34<span class="hljs-number">;</span></span></span></span></span>

 

查看 age >=20 并且 age <= 40
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:{$gte:<span style="color: #800080;">20</span>,$lte:<span style="color: #800080;">40</span>}});

 

模糊查询-查询名称中带有 a 的
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:/a/});<br>//相当于%% <br><span class="hljs-operator"><span class="hljs-keyword">select * <span class="hljs-keyword">from student <span class="hljs-keyword">where name <span class="hljs-keyword">like <span class="hljs-string">‘%a%‘; </span></span></span></span></span></span>

 

查询名称是以j开头的 ^
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:/^j/})<br><span class="hljs-operator"><span class="hljs-keyword">相当于 select * <span class="hljs-keyword">from student <span class="hljs-keyword">where name <span class="hljs-keyword">like <span class="hljs-string">‘j%‘; </span></span></span></span></span></span>

 

查询名称是以k结尾的 $
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">name</span><span style="color: #800000;">‘</span>:/k$/})<br><span class="hljs-operator"><span class="hljs-keyword">相当于 select * <span class="hljs-keyword">from student <span class="hljs-keyword">where name <span class="hljs-keyword">like <span class="hljs-string">‘%k‘; </span></span></span></span></span></span>

 

查询指定列,查询age,1表示使用当前这个字符
  1. db.student.find({<span style="color: #800000;">‘</span><span style="color: #800000;">age</span><span style="color: #800000;">‘</span>:{$gte:<span style="color: #800080;">34</span>}},{name:<span style="color: #800080;">1</span>});<br>相当于:<span class="hljs-tag">select <span class="hljs-tag">name<span class="hljs-tag"> <span class="hljs-tag">from student<span class="hljs-tag"> <span class="hljs-tag">where <span class="hljs-tag">age >=34; </span></span></span></span></span></span></span>

 

升序和降序 sort
  1. db.student.find().sort({age:<span style="color: #800080;">1</span><span style="color: #000000;">}); 升序
  2. db.student.find().sort({age:</span>-<span style="color: #800080;">1</span>}); 降序

 

查询指定条数 limit
  1. db.student.find().limit(<span style="color: #800080;">3</span>);<br>相当于 select <span class="hljs-number">* from student limit(5)<span class="hljs-comment">; </span></span>

 

按照升序排序,获取前三条数据
  1. db.student.find().sort({age:<span style="color: #800080;">1</span>}).limit(<span style="color: #800080;">3</span>);

 

查询在 3-5 之间的数据

  1. db.student.find().limit(5).skip(3<span style="color: #000000;">);
  2. 可用于分页,limit 是 pageSize,skip 是第几页</span>*pageSize

 

or 与查询
  1. db.userInfo.find({$or: [{age: <span style="color: #800080;">22</span>}, {age: <span style="color: #800080;">25</span><span style="color: #000000;">}]});
  2. 相当于:</span><span style="color: #0000ff;">select</span> * <span style="color: #0000ff;">from</span> userInfo <span style="color: #0000ff;">where</span> age = <span style="color: #800080;">22</span> or age = <span style="color: #800080;">25</span>;

 

findOne 查询第一条数据
  1. <span style="color: #000000;">db.student.findOne();
  2. db.student.find().limit(</span><span style="color: #800080;">1</span>);
 

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

  1. db.student.find({age: {$gte: <span style="color: #800080;">25</span><span style="color: #000000;">}}).count();
  2. 相当于:</span><span style="color: #0000ff;">select</span> count(*) <span style="color: #0000ff;">from</span> userInfo <span style="color: #0000ff;">where</span> age >= <span style="color: #800080;">20</span><span style="color: #000000;">;
  3. 如果要返回限制之后的记录数量,要使用 count(</span><span style="color: #0000ff;">true</span>)或者 count(非 <span style="color: #800080;">0</span>) db.student.find().skip(5).limit(<span style="color: #800080;">2</span>).count(<span style="color: #0000ff;">true</span>);

 

mongodb整个操作,跟js非常相似,使用的都是 链式操作 + 方法 + 参数值  

修改数据记录

update() 方法用于更新已存在的文档
  1. <span style="color: #000000;">db.collection.update(
  2. </span><query><span style="color: #000000;">,
  3. </span><update><span style="color: #000000;">,
  4. {
  5. upsert: </span><boolean><span style="color: #000000;">,
  6. multi: </span><boolean><span style="color: #000000;">,
  7. writeConcern: </span><document><span style="color: #000000;">
  8. }
  9. )</span>

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

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

  1. db.student.update({<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"jack</span><span style="color: #800000;">"</span>},{$<span style="color: #0000ff;">set</span>:{<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:<span style="color: #800080;">16</span>}});

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

  nMatched  相配的

  nUpserted 插入的

  nModified 修改的

将zhangsan的年龄修改为18

  1. db.student.update({<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">zhangsan</span><span style="color: #800000;">"</span>},{$<span style="color: #0000ff;">set</span>:{<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:<span style="color: #800080;">18</span>}});

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

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

 

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

  1. db.student.update({<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">王五</span><span style="color: #800000;">"</span>},{<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">王中王</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:<span style="color: #800080;">21</span>});

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

  1. db.student.update({<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">小明</span><span style="color: #800000;">"</span>},{<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">大明</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:<span style="color: #800080;">16</span>});

 

  1. db.users.update({name: <span style="color: #800000;">‘</span><span style="color: #800000;">lisi</span><span style="color: #800000;">‘</span>}, {$inc: {age: <span style="color: #800080;">30</span>}}, <span style="color: #0000ff;">false</span>, <span style="color: #0000ff;">true</span><span style="color: #000000;">);
  2. 相当于:update users </span><span style="color: #0000ff;">set</span> age = age + <span style="color: #800080;">30</span> <span style="color: #0000ff;">where</span> name = <span style="color: #800000;">‘</span><span style="color: #800000;">Lisi</span><span style="color: #800000;">‘</span>;

 

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

  1. <span style="color: #000000;">db.collection.updateOne() 向指定集合更新单个文档
  2. db.collection.updateMany() 向指定集合更新多个文档</span>

 

更新单个文档

  1. db.student.updateOne({<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">李四</span><span style="color: #800000;">"</span>},{$<span style="color: #0000ff;">set</span>:{<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">28</span><span style="color: #800000;">"</span>}})

 

更新多个文档

  1. db.student.updateMany({<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:{$gt:<span style="color: #800000;">"</span><span style="color: #800000;">10</span><span style="color: #800000;">"</span>}},{$<span style="color: #0000ff;">set</span>:{<span style="color: #800000;">"</span><span style="color: #800000;">status</span><span style="color: #800000;">"</span>:<span style="color: #800000;">"</span><span style="color: #800000;">xyz</span><span style="color: #800000;">"</span>}})

 

删除数据

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

  1. <span style="color: #000000;">db.collection.remove(
  2. </span><query><span style="color: #000000;">,
  3. {
  4. justOne: </span><boolean><span style="color: #000000;">,
  5. writeConcern: </span><document><span style="color: #000000;">
  6. }
  7. )</span>

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别。
  1. db.student.remove({age: <span style="color: #800080;">18</span>});

 

 

 

 

MongoDB增删改查操作

标签:where   limit   count()   需要   查看   条件   iter   inf   operator   

人气教程排行