mongodb介绍
使用docker 安装 mongodb
mongodb命令
其他命令
1、进入mongodb命令操作界面
命令:mongo
进入mongo默认所在的数据库是 test 数据库
数据库操作命令
1、查看mongodb有几个数据库
命令:show dbs 或者 show databases
说明:
数据库:admin、config、local 三个数据库是mongodb默认的保留数据库。
admin∶从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
config :当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
2、在mongo命令操作终端如何清屏
命令:cls
3、如何创建一个数据库。并且去换到这个数据
命令:use 数据库名
作用:用户切换数据库和新建数据库。数据库存在则是切换数据库。不存在就是创建该数据库并且切换到该数据库。
4、查看当前所在位置的数据库
命令:db
结果说明:当前在数据库 leodata 下
5、删除数据库
命令:db.dropDatabase()
集合操作命令(对应msyql的的表)
1、创建集合
语法:db.createCollection(“集合名”)
命令:db.createCollection(“users”)
2、查看集合
命令:show collections 或者 show tables
3、删除结合
语法:db.集合名.drop()
命令:db.users.drop()
文档操作命令(对应mysql表中的一条条数据)
1、添加文档
1.1、添加一条文档
语法:
db.集合名.insert({"k1":"v1","k2":"v2"})
命令:
db.leotable.insert({"name":"leo","age":18})
1.2、添加多条文档,使用逗号分开
1.3、使用脚本插入数据添加多条数据
2、查询集合中所有 文档
语法:db.集合名.find()
命令:db.leotable.find()
3、删除文档
语法:db.集合名.remove({删除条件})
命令:
db.leotables.remove({}) – 删除集合中所有文档
db.leotables.remove({“name”:“王五0”}) – 删除集合leotables中 字段 name值为"王五0"的文档。
4、更新文档
语法:db.集合名.update({更新的条件},{更新的内容},{参数})
案例:db.leotable.update({“_id”:1},{“age”:25}) --将文档 _id为1的“age”值 更新为25 。
命令执行原理:这个更新是将符合条件的全部更新成后面的文档,相当于先删除再添加
出现的问题:会覆盖原来已有的数据。如图 参数为:name 的数据没有了。
这个方式修改。只会修改一条符合条件的数据。
如何保留原来数据进行更新
语法:db.集合名.update({更新的条件},{$set:{更新的内容}},{参数})
说明:将要更新的内容用【$set:{}】包含起来
如果在修改时,修改所有符和修改条件的所有数据
参数说明:
- upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入该条数据;true为插入,默认是false,不插入。
- multi:可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
案例:全部更新
5、查询文档
语法:
db.集合名.find({query,projection})
参数说明:
- query:可选,查询操作时,可以填写查询条件
- projection:可选,该参数可以设置指定对查询结果返回指定的键值,相当于sql查询中的* 号和查询指定的字段一个意思。不写默认查询所有键值。
说明:find() 方法是以这种非结构化的方式显示查询结果的。如果想格式化查询结果可以用语法格式:
db.集合名.find({query,projection}).pretty()
案例: 太长的数据,会格式化。
注意:pretty()方法以格式化的方式来显示所有文档。
and :并且怎么查
语法:
db.集合名词.find({key1:value1,key2:value2}).pretty()
说明:类似于where 语句:where key1=value1 and key2=value2
案例: 查询 _id=1 并且 age=99 的 数据
注意:如果同一个key的查询条件出现多次,只会已最后一个为准。
案例: 查询 age=24 并且 age=28的 数据
or :或者怎么查询
语法:
db.集合名.find({$or:[{key1:value1},{key2:value2}]}).pretty()
案例 : 查询 age=24 或者 age=28的 数据
and 和 or 联合查询
案例: age>=18 and (age==18 or name=‘王五2’)
命令:
db.leotable.find({age:{$gte:18},$or:[{age:18},{name:'王五2'}]});
结果