Mongodb基本命令总结
Mongodb是近年来很火的一个非关系型数据库,不少企业都用来做部分业务模块数据的扩展存储,这里我 总结了一些Mongodb的基本使用,作为分享,也方便自己以后需要的时候查询使用。 <p style="text-align: center; background-color: #5fbdce; color: #015666; height: 40px; width: 80%; font-size: 22px">数据库基本操作 1. 创建数据库 use databaseName 选择一个数据库,如果数据库不存在就自动创建一个数据库 只有向数据库中插入数据时,数据库才会被真实创建出来,而当数据库中没有数据时,use不会马上创建数据库, 这个特点有效减少了存储空间的占用。 2. 查看数据库 show dbs mongodb中默认有以下几个数据库: admin 存放用户和权限 local 存放本地化数据(分布式部署) config 存储分片信息 3. 删除数据库 db.dropDatabase() 注意:mongodb中函数都用小驼峰命名 4. 创建集合 db.createCollection(collection_name) 5. 查看集合 show collections 或者 show tables 注意集合的命名规则: 1) 合法的utf-8字符串 2) 不能有’ ’ 3) 不能以system开头,因为是系统的保留前缀 4)不能和关键字重复 6. 删除集合 db.collection_name.drop() 7. 集合重命名 db.collection_name.renameCollection(‘new_name’) 8. 获取集合对象 db.getCollection(‘collection_name’) 等价于db.collection <p style="text-align: center; background-color: #5fbdce; color: #015666; height: 40px; width: 80%; font-size: 22px">集合中增加数据 1. insert方法插入数据 语法: db.collection_name.insert({数据内容}) 当向一个集合中插入数据的时候,如果这个集合不存在则自动创建 最近插入的数据文档在数据库的最上方显示 插入的数据域默认是字符串,如果在插入字段中不用双引号,数据库后台就会自动加上 同时插入多条文档 db.collection_name.insert([{ },{ },{ }]) 2. save方法插入文档 db.collection_name.save() save与insert的区别 如果加_id域,如果这个_id域的值已经存在,则会替换原有的文档,而insert是不允许插入相同 的_id的 <p style="text-align: center; background-color: #5fbdce; color: #015666; height: 40px; width: 80%; font-size: 22px">集合中删除数据 MongoDB删除数据的命令比较简单,也没有太多的变化 语法: db.collection.remove(query,justOne) 参数: query与下文查询操作的query相同,justone表示只是删除匹配到的多条文档中的第一条文档 <p style="text-align: center; background-color: #5fbdce; color: #015666; height: 40px; width: 80%; font-size: 22px">集合查询操作 1. 查询文档(重点) 语法: db.collection_name.find(query,field) 相当于 mysql中的 select * query 筛选条件,相当于MySQL的where子句 field 选择要展示的域 返回值: 返回查找到的文档 需要理解的点: query 和 field都是可选参数,不写参数就默认显示所有文档,也只有查找时不用传入query,一般其他操作都需要传入query进行筛选 query 以键值对的形式给出查找条件 field 以键值对的形式给出要展示或者不展示的 域为键,值时0时不显示该域, 值是1时显示该域,这是mongodb特有的特性 例如:为了避免看到一大串的id值,在查找时_id 域经常会被设置为0 db.class.find( {},{_id :0} ) 除了_id 域,其他域都正常显示 注意: 1. 在写第二个参数时必须要写第一个参数 2. 第二个参数只能同时限制多个域的0/1值,不能多个域都设置不同,否则其他没设置的域会混乱,_id域的设置除外(即无论_id域怎么设 置都不影响其他域的设置) 好了,重点中的重点来了 query的使用 因为键值对无法进行像MySQL中where子句那样强大的筛选作用(键值对筛选相当于MySQL中where子句筛选的等于条件),mongodb引入了操作符操作符的表达形式是以键值对形式出现的。下面介绍几种常用的操作符,更多的操作符可以查看Mongodb的官方文档。 1)比较操作符 $eq 等于操作符 例如:db.class.find( {age: {$eq : 18} },{_id :0} ) 更多操作符: $gt 大于操作符 $lt 大于操作符 $ lte 小于等于操作符 $gte 大于等于操作符 $ne 不等于操作符 细节:mongodb中多种类型的数据都是可以比较的,例如数值类型,字符串类型 2)范围操作符 $ in [ ] 在范围集合内的文档被匹配 (连续的范围) 例如:db.class.find( {age: {$in : [18,23]} },{_id :0} ) 如果是用 $ and只能这样表达: $and:[{age:{$gt:.. } },{age:{$lt:.. } } ] 用gt和lt一起用来把范围括起来 $ nin[ ] 不在范围集合内的文档被匹配 3)逻辑操作符 1. $ and: [ ] 和运算符 query 中如果多个条件用逗号隔开,就为and关系(类似mysql中的where子句中的and) 例如:db.class.find( {$and: [{age: {$ gt 17},{age: {$ lt 22} ],{_id :0} ) 查询年龄大于17,小于22的同学 用$ and 可以改写为 db.class.find({$ and : [{ age: 17},{sex: ‘M’ } ] },{_id :0} ) [ ]内一定要分成连个字典来表示两个条件,否则(只用一个字典来包含两个条件并用逗号分隔)在语法上就只表示一个条件,只不过这个条件里面包含两个条件而已 一般平常使用多直接用逗号来分隔条件而不用 $and的操作符 2 .$ or 或运算符 语法表达上跟 $ and 一样,表达的是或逻辑筛选 1. $not 取反运算符 db.class.find( {age: {$not {$ gt 17} } },{_id :0} ) 匹配年龄小于等于17的文档 注意: $not 一般添加在条件值的前面,对值进行取反 2. $ nor 既不也不运算符 not(A or B) --> not A and not B db.class.find({$ nor : [{ age: 17},{_id :0} ) 注意:如果筛选匹配的文档的域是其他文档不具备的;即一个域有些文档有值,有些文档没值,这种筛选是无法匹配的 2. 查询操作的另一条语法 findOne(query,field) 查找符合条件的第一条文档 参数跟find一样 <p style="text-align: center; background-color: #5fbdce; color: #015666; height: 40px; width: 80%; font-size: 22px">集合的更新操作 1. 修改文档内容操作 语法: db.collection.update(query,update,upsert,multi) 与mysql不同,mongodb所有修改操作都用update,包括对集合的域值的修改和集合结构的修改 参数:query 筛选要修改的文档,相当于where update 将筛选的文档修改为什么内容,相当于set,需要配合修改操作符一起使用 upsert 布尔值,默认为false,如果query文档不存在则不进行修改,如果为true,在文档不存在条件下,则根据query和update插入新文档 multi 布尔值,默认为false如果query筛选的为多条,则只修改第一条,如果设置为true,则修改所有符合条件文档 注意: upset 一般为用默认值false,因为如果原本没匹配的文档,很有可能是程序员自己输错了某些内容 修改操作符: $ set 如果没有该文档,需要插入的时候是根据查询条件和设置条件作为域来插入的 如果需要修改的值为多个,就像插入数据一样,将不同域的值用一个{ }包起来,例如: db.class.update({name:'小张'},{$set:{age:16,sex:'m'}},true) (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |