时间:2021-07-01 10:21:17 帮助过:4人阅读
插入数据,返回值是插入的数量
- 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>});
插入多条文档数据
注意:里面是数组包对象的格式
- 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>}])
查找所有记录
- <span style="color: #000000;">db.userInfo.find();
- 相当于:</span><span style="color: #0000ff;">select</span>* <span style="color: #0000ff;">from</span> userInfo;
查询name=张三的数据
- 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
- 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
如果有,直接返回结果;没有则为空
- 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
- 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
- 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>}})
- 相当于:<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
- 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>}})
- 相当于:<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
- 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>}})
- 相当于:<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
- 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 的
- 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开头的 ^
- 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结尾的 $
- 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表示使用当前这个字符
- 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
- db.student.find().sort({age:<span style="color: #800080;">1</span><span style="color: #000000;">}); 升序
- db.student.find().sort({age:</span>-<span style="color: #800080;">1</span>}); 降序
查询指定条数 limit
- 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>
按照升序排序,获取前三条数据
- db.student.find().sort({age:<span style="color: #800080;">1</span>}).limit(<span style="color: #800080;">3</span>);
查询在 3-5 之间的数据
- db.student.find().limit(5).skip(3<span style="color: #000000;">);
- 可用于分页,limit 是 pageSize,skip 是第几页</span>*pageSize
or 与查询
- db.userInfo.find({$or: [{age: <span style="color: #800080;">22</span>}, {age: <span style="color: #800080;">25</span><span style="color: #000000;">}]});
- 相当于:</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 查询第一条数据
- <span style="color: #000000;">db.student.findOne();
- db.student.find().limit(</span><span style="color: #800080;">1</span>);
查询某个结果集的记录条数 统计数量
- db.student.find({age: {$gte: <span style="color: #800080;">25</span><span style="color: #000000;">}}).count();
- 相当于:</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;">;
- 如果要返回限制之后的记录数量,要使用 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非常相似,使用的都是 链式操作 + 方法 + 参数值
- <span style="color: #000000;">db.collection.update(
- </span><query><span style="color: #000000;">,
- </span><update><span style="color: #000000;">,
- {
- upsert: </span><boolean><span style="color: #000000;">,
- multi: </span><boolean><span style="color: #000000;">,
- writeConcern: </span><document><span style="color: #000000;">
- }
- )</span>
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({<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
- 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,就把按条件查出来多条记录全部更新。
- 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
- 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 关键字了
- 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>});
- 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;">);
- 相当于: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提供以下更新集合文档的方法:
- <span style="color: #000000;">db.collection.updateOne() 向指定集合更新单个文档
- db.collection.updateMany() 向指定集合更新多个文档</span>
更新单个文档
- 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>}})
更新多个文档
- 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() 方法的基本语法格式如下所示:
- <span style="color: #000000;">db.collection.remove(
- </span><query><span style="color: #000000;">,
- {
- justOne: </span><boolean><span style="color: #000000;">,
- writeConcern: </span><document><span style="color: #000000;">
- }
- )</span>
参数说明:
- db.student.remove({age: <span style="color: #800080;">18</span>});
MongoDB增删改查操作
标签:where limit count() 需要 查看 条件 iter inf operator