MongoDB基础操作,MongoDB入门类别

2019-10-05 00:36 来源:未知
更加多内容迎接来到博客 :

<b>MongoDB版本:3.4</b>

find()

db.user.finddb.user.find()

//查询name="jianjian"的所有文档db.user.find({"user":"jianjian"})
  • $lt 小于
  • $gt 大于
  • $gte 大于等于
  • $lte 小于等于
//查询年龄小于18的db.user.find("age":{$lt:"18"})

limit

number为条数

//查询条数限制为10条db.user.find().limit

sort

key为索要排序的字段,升序为1,降序为-1

//按照年龄升序排序db.user.find().sort({"age":1})

insert()基本语法如下:

db.collection.insert( <document or array of documents>, { writeConcern: <document>, ordered: <boolean> })

db.user.insert({"name":"jianjian"})

db.user.insert([{"name":"jianjian"},{"name":"dongdong"}])

db.user.insert({"age":11},{"age":12})

除非age:11被插入进去,由于接受的插入文档不是数组

轻巧误导的地点:

db.user.insert([{"name":"jianjian"},{"name":"dongdong"}])db.user.insert({"name":"jianjian"},{"age":"dongdong"})db.user.insert({"name":"jianjian","name":"dongdong"})

先是个插入是插入多个文书档案,第二个插入是插入一个文档,第三个固然也是贰个文书档案可是由于键重复,所以唯有后三个值会被插入age:12

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

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

参数表明:

  • query :删除的文书档案的准绳。
  • justOne : 如若设为 true 或 1,则只删除二个文书档案。
  • writeConcern :抛出拾壹分的等第。
db.new.remove({"num":{$gt:100}});

db.new.remove;

db.new.remove({"num":100})

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 :可选,抛出特别的等级。

用以修改键的值,倘使键不设有就增添键

//将age=10的数据改成15,默认如果age=10的有多条记录只更新第一条db.user.update({"name":"li"},{$set:{"age":10}})//更新多个满足条件的值,同时如果更新的值不存在就插入更新的值,注意:这里插入的值是20不是30db.user.update({"age":30},{$set:{"age":20}},{multi:true,upsert:true})可以省略multi,upsert,这里不能有花括号,但是不建议这样做db.user.update({"age":30},{$set:{"age":20}},true,true)//值更新为数组db.user.update({"name":"zhang"},{$set:{"age":[10,12,14]}},{upsert:true})//修改为其它的值db.user.update({"name":"zhang"},{$set:{"age":''}},{upsert:true})db.user.update({"name":"zhang"},{$set:{"age":null}},{upsert:true})

用以追加已有键的值,借使键空头支票就创办,只好用来整形、长整型、浮点型。

//将name=zhang的记录的age键+10db.user.update({"name":"zhang"},{$inc:{"age":10}},{upsert:true})//将name=zhang的记录的age键-10db.user.update({"name":"zhang"},{$inc:{"age":-10}},{upsert:true})

删除键类似关周全据库的去除字段操作,要分别$set修改符的将键设空或许null值

db.user.update({"name":"zhang"},{$unset:{"age":1}})

假设数组已经存在,“$push”会向已部分数组末尾参预一个因素,若是未有就创办二个新的数组。注意:必需是数组手艺参与新的值

db.user.update({"name":"zhang"},{$push:{"comments":{"email":"abc@qq.com","address":"beijing"}}});//再插入一条commentsdb.user.update({"name":"zhang"},{$push:{"comments":{"mark":"aaa"}}});

向数组中添美元素

db.axc.insert({"title":1,"list":[1,2,3]})//向list数组中添加单个元素db.axc.update({"title":1},{$push:{"list":4}})//向list数组中添加多个元素db.axc.update({"title":1},{$push:{"list":{$each:[6,7]}}});

往数组聚集插入成分时,如若成分存在就不插入;方法和$push同样,唯一的分别正是$push不会决断重复值,重复也足以插入。$addToSet也能够组合$each一齐使用办法和$push同样能够并且往数组中插入四个成分而且只要元素存在则不插入。

db.axc.update({"title":1},{$addToSet:{"list":2}})db.axc.update({"title":1},{$addToSet:{"list":{$each:[2,3,4]}}});

相配数组中的成分将协作上的要素全体刨除,注意只能对数组中的成分进行相称

db.lists.insert({"title":1,"list":[1,2,3]});//清除list数组中的元素2db.lists.update({},{$pull:{"list":2}})

从数组的末端或头删除贰个要素,$pop:{"list":1}:从最终删除二个成分;$pop:{"list":-1}:从开首删除四个要素

//向数组list中插入两个元素db.lists.update({},{$push:{"list":{$each:[2,4]}}});//从末尾删除元素db.lists.update({},{$pop:{"list":1}});//从开头删除元素db.lists.update({},{$pop:{"list":-1}});

依附地方的数组修改章程可以有三种艺术来定位数组中的成分:

1.经过下标;数组的下标都是从0开始。

2.通过$定位操作符,

db.comment.insert({"title":1,"comments":[{"comment":"a","author":"chen","age":10},{"comment":"b","author":"wang","age":30},{"comment":"c","author":"zhang","age":40}]});

//将数组中的第一个列表的age值改成20//方法1:db.comment.update({},{$set:{"comments.0.age":20}});//方法2:db.comment.update({"comments.author":"chen"},{$set:{"comments.$.age":20}});

目录经常能够相当大的加强查询的频率,若无索引,MongoDB在读取数据时必得扫描会集中的每一个文件并选拔那一个切合查询条件的笔录。

这种扫描全集结的询问效能是相当低的,非常在拍卖大量的数码时,查询能够要开销几十秒以至几分钟,那对网址的性质是极度沉重的。

目录是独特的数据结构,索引存款和储蓄在多少个便于遍历读取的数码集合中,索引是对数据库表中一列或多列的值举办排序的一种结构

MongoDB使用 ensureIndex() 方法来创立索引。

设置userNo为索引:

db.user.ensureIndex({"userNo":1})1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。

除去test集结,注意drop后边的括号里面无需带花括号

db.test.drop()

概述  

本章节介绍Insert、Update、Delete、Drop操作基本语法。

 

环境:

Version:3.4

insert

insert()基本语法如下:

db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)

1.单条插入

db.person.insert({"age":10})

2.多条插入

接纳文档数组作为参数,但是注意批量插入也会存在长度的限量

db.person.insert([{"age":11},{"age":12}])

3.荒谬的语法:

db.person.insert({"age":11},{"age":12})

除非age:11被插入进去,由于接到的插入文书档案不是数组

轻便误导的地方:

db.person.insert([{"age":11},{"age":12}])

db.person.insert({"name":11,"age":12})

db.person.insert({"age":11,"age":12})

先是个插入是插入三个文书档案,第2个插入是插入二个文书档案,第多少个纵然也是二个文书档案不过出于键重复,所以独有后三个值会被插入age:12

图片 1

delete

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

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

参数表达:

  • query :(可选)删除的文书档案的原则。
  • justOne : (可选)如若设为 true 或 1,则只删除二个文书档案。
  • writeConcern :(可选)抛出拾叁分的品级。

1.删除num大于100的数据

db.new.remove({"num":{$gt:100}});

2.去除new集结全部数据

db.new.remove({});

3.删除num等于100的数据

db.new.remove({"num":100})

4.测量检验删除速度

var timeRemoves = function(){

    var start =(new Date()).getTime();

    db.new.remove({'num':{$gt:100}});

    db.new.findOne();

    var timediff= (new Date()).getTime() - start;

    print("removeTimes: "+timediff+"ms")

}

timeRemoves()

update

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 :可选,抛出极度的品级。

例:

db.person.insert([{"name":"chen","age":15},{"name":"li","age":20},{"name":"zhang","age":20}]);

$ set修改符

用来修改键的值,若是键子虚乌有就扩展键

//将age=10的多少改成15,私下认可假设age=10的有多条记下只更新第一条

db.person.update({"name":"li"},{$set:{"age":10}})

//更新四个满足条件的值,同期借使更新的值不设有就插入更新的值,注意:这里插入的值是20不是30

db.person.update({"age":30},{$set:{"age":20}},{multi:true,upsert:true})

能够省略multi,upsert,这里不能够有花括号,可是不提议如此做

db.person.update({"age":30},{$set:{"age":20}},true,true)

//值更新为数组

db.person.update({"name":"zhang"},{$set:{"age":[10,12,14]}},{upsert:true})

//修改为其余的值

db.person.update({"name":"zhang"},{$set:{"age":''}},{upsert:true})

db.person.update({"name":"zhang"},{$set:{"age":null}},{upsert:true})

$inc修改符

用以追加已有键的值,要是键不设有就创制,只可以用于整形、长整型、浮点型。

//将name=zhang的笔录的age键+10

db.person.update({"name":"zhang"},{$inc:{"age":10}},{upsert:true})

//将name=zhang的笔录的age键-10

db.person.update({"name":"zhang"},{$inc:{"age":-10}},{upsert:true})

$unset修改符

删除键类似关周全据库的删除字段操作,要分别$set修改符的将键设空也许null值

db.person.update({"name":"zhang"},{$unset:{"age":1}})

$push修改符

假诺数组已经存在,“$push”会向已部分数组末尾参与多少个因素,倘若未有就创立二个新的数组。注意:必须是数组技能投入新的值

db.person.update({"name":"zhang"},{$push:{"comments":{"email":"abc@qq.com","address":"beijing"}}});

图片 2

//再插入一条comments

db.person.update({"name":"zhang"},{$push:{"comments":{"mark":"aaa"}}});

图片 3

$each修改符

向数组中添新币素

db.axc.remove({})

db.axc.insert({"title":1,"list":[1,2,3]})

db.axc.find();

//向list数组中增加单个成分

db.axc.update({"title":1},{$push:{"list":4}})

//向list数组中添增添个因素

db.axc.update({"title":1},{$push:{"list":{$each:[6,7]}}});

db.axc.find();

图片 4

$addToSet修改符

往数组聚焦插入成分时,若是成分存在就不插入;方法和$push一样,独一的分别正是$push不会判定重复值,重复也得以插入。$addToSet也得以结合$each一齐行使方式和$push同样能够何况往数组中插入多少个因素并且只要成分存在则不插入。

db.axc.update({"title":1},{$addToSet:{"list":2}})

db.axc.update({"title":1},{$addToSet:{"list":{$each:[2,3,4]}}});

$pull修改符

相称数组中的成分将拾壹分上的成分全部刨除,注意只可以对数组中的成分进行相称

db.lists.insert({"title":1,"list":[1,2,3]});

db.lists.find();

图片 5

//清除list数组中的成分2

db.lists.update({},{$pull:{"list":2}})

db.lists.find();

图片 6

$pop修改符

从数组的末尾或头删除二个要素,$pop:{"list":1}:从最终删除三个成分;$pop:{"list":-1}:从开首删除叁个因素

//向数组list中插入多少个因素

db.lists.update({},{$push:{"list":{$each:[2,4]}}});

db.lists.find()

图片 7

//从最后删除成分

db.lists.update({},{$pop:{"list":1}});

图片 8

//从最早删除成分

db.lists.update({},{$pop:{"list":-1}});

图片 9

依靠地点的数组修改章程

能够有三种方法来恒定数组中的成分:

1.因而下标;数组的下标都以从0起初。

2.经过$定位操作符,

db.comment.insert({"title":1,"comments":[{"comment":"a","author":"chen","age":10},{"comment":"b","author":"wang","age":30},{"comment":"c","author":"zhang","age":40}]});

图片 10

//将数组中的第一个列表的age值改成20

//方法1:

db.comment.update({},{$set:{"comments.0.age":20}});

//方法2:

db.comment.update({"comments.author":"chen"},{$set:{"comments.$.age":20}});

drop

删除test集合,注意drop后边的括号里面无需带花括号

db.test.drop()

总结

 

 

 

 

 

备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

 

TAG标签:
版权声明:本文由金沙澳门唯一官网发布于编程教学,转载请注明出处:MongoDB基础操作,MongoDB入门类别