mongodb初中级实战教程 讲师:涂宗勋 讲师的CSDN博客地址 http://blog.csdn.net/tuzongxun
个人介绍 姓名:涂宗勋 籍贯:湖北十堰 现居:广东深圳 擅长技术:java、mongodb、activiti等 个人签名: 挖掘自己的价值,为自己造一个好饭碗;展现自己的得失,助他人造一个好饭碗! 个人博客网站:http://www.tuzongxun.cn qq交流群:114308990
第五课 mongodb基础操作 一、准备知识 对比mysql来理解mongodb的一些术语和概念 mysql mongodb 库database 库db 表table 集合collecction 记录 文档 列名 key 每列对应的值 value
第五课 mongodb基础操作 二、基础查询操作 show dbs 查询数据库列表(需要当前用户对所有库拥有读权限) show collections 查询当前数据库的集合列表(需要当前用户对当前库有读权限) show users 查询当前所在库的所有用户(读的权限) db.system.users.find() 查询出所有的用户信息,包括作用域,认证方式等。只能在admin库中操作,mongodb3.0以后说是没有默认的admin库了,刚创建的数据库中是没有admin库的,但实际使用时发现依然是存在的,因为有很多操作只能在进入admin库以后才能成功执行。
第五课 mongodb基础操作 db.collectionName.find({…}) 条件查询具体的文档数据,如果结果超过20条,默认返回前20条。不指定条件时,默认查询所有。 find实际上有两个参数,每个参数都是bson格式的键值对,中间以逗号隔开,第一个参数代表查询条件。 find第二个参数代表指定返回的列或者说指定不返回的列,第二个参数的key为指定列的列名,value为1代表需要返回,value为0代表不需要返回。
第五课 mongodb基础操作 有同学大概已经想到一件事,那就是这里查询条件的key:value中,冒号“:”实际上就相当于mysql中的等于“=”,那么对于mysql中的>、<、>=、<=这些符号是否也是可以直接写的呢?答案是否定的。 Mongodb中这些运算符需要使用特定的操作符,$gt、$lt等,学java学js的应该也能想到,这里说白了就是使用转义字符,之前介绍过mongodb是用js写的。
第五课 mongodb基础操作 三、help操作(授人以鱼,不如授人以渔) 使用help可以查看各个级别的使用帮助,例如直接help,查询出的就是最高级别的帮助
第五课 mongodb基础操作 使用db.help(),就可以查看库级的帮助,列出库级的所有操作帮助;使用db.test.help(),就可以查看集合级别的帮助;以及使用rs.help()就可以查看副本集级别的帮助等等,知道有这个操作了,就可以针对性的结合搜索引擎学习了解了。
第五课 mongodb基础操作 四、mongodb的新增操作 use dbName 切换数据库,使用数据库,如果该数据库目前不存在,那么这个就是创建数据库的第一步 db.collectionName.insert({key:value}) 插入数据,如果当前库或者集合不存在,那么这就是创建该数据库和集合的第二步。 当然了,新增数据还可以用db.collectionName.save({key:value}),保存数据,也是可以起到创建数据库和集合的作用。
第五课 mongodb基础操作 上边说insert和save是创建库和集合的第二步,前提是该库和集合不存在,当库和集合存在时,他们的作用就是单纯的新增数据。 但这两个操作只是比较常规的新增操作,还有一些不太常规的,实际上之前已经有接触过一个: db.createUser({})创建用户; 以及后边要说的创建索引: db.test.createIndex({})/db.test.ensureIndex({}) ……
第五课 mongodb基础操作 五、修改操作 db.collectionName.update({key:value},{key:value}) 这种是最简单的修改操作,第一个参数是条件,第二个是修改后文档的内容,这里的问题就是,不论之前文档里是什么,执行这个操作后第二个参数内容就会覆盖掉原来的数据
第五课 mongodb基础操作 一般来说,上边的这种情况在实际使用的时候是不太可能出现的,我们希望的是只更改name字段,而不是把整个文档覆盖掉,如果要实现只更改name字段的情况,就需要使用到$set操作符。当然了这里的操作符比较多,可以自己网上搜一下。
第五课 mongodb基础操作 Mongodb在update操作上有一个相对于mysql来说比较牛的功能,那就是当根据条件没有匹配到任何数据的时候,如果是mysql,就不会存在修改的动作。而mongodb中,可以通过指定update第三个参数为true使根据条件没有匹配到数据时,直接把该数据新增到数据库中,update第三个参数默认是false。
第五课 mongodb基础操作 在mysql中,如果使用update table set name=“aaa” where name=“bbb”这样一条修改语句,那么所有name为bbb的都会被改成aaa,但是在mongodb中我们上边的实例中,实际上只会修改匹配到的第一条
第五课 mongodb基础操作 如果要实现和mysql一样的,匹配的数据全部修改,要怎么办呢?Mongodb的update操作还有第四个参数,这个参数也是默认为false,就是匹配多条数据时只作用于第一条,当把这个值改为true时,就会修改所有匹配的数据
第五课 mongodb基础操作 以上是update中比较常用的参数,实际上并不止这些,想要了解的可以直接去官网 https://docs.mongodb.com/manual/reference/method/db.collection.update/#db.collection.update
第五课 mongodb基础操作 六、删除操作 db.dropDatabase() 删除当前库,在哪个库执行就删除哪个,要慎用,admin库是不能随便drop的。
第五课 mongodb基础操作 db.collectionName.remove({key:value})可以删除集合中符合条件的数据,当不指定key:value只使用{}时,会删除所有数据,但是和find不一样的是,这里{}必须有,即便是没有任何内容。但是即使是使用空的{}删除,删除的只是数据,而不会删除表结构。也就是说删的是mongodb集合中的文档,而不会删除集合本身。
第五课 mongodb基础操作 如果要删除数据和集合的全部信息,就要使用db.collectionName.drop(),执行这个操作会发现对应的集合就查不到了 上边的这些也是基础常规的删除操作,和新增一样,也有一些不常规的,例如对用户的删除,对索引的删除,这里就不再举例。
THANKS 本课程由 涂宗勋(讲师名称)提供 CSDN网站:www.csdn.net 企业服务:http://ems.csdn.net/ 人才服务:http://job.csdn.net/ CTO俱乐部:http://cto.csdn.net/ 高校俱乐部:http://student.csdn.net/ 程序员杂志:http://programmer.csdn.net/ CODE平台:https://code.csdn.net/ 项目外包:http://www.csto.com/ CSDN博客:http://blog.csdn.net/ CSDN论坛:http://bbs.csdn.net/ CSDN下载:http://download.csdn.net/