1.拉取镜像
docker pull mongo:4.0.3
2.创建容器
docker create --name mongodb --restart=always -p 27017:27017 -v mongodb:/data/db mongo:4.0.3
3.启动容器
docker start mongodb
4.进入容器
docker exec -it mongodb /bin/bash
5.使用MongoDB客户端进行操作
mongo
> show dbs #查询所有的数据库
> use testdb #通过use关键字切换数据库
#注:在MongoDB中,数据库是自动创建的,通过use切换到新数据库中,进行插入数据即可自动创建数据库
> show tables #查看表(tables和collections一样)
> db.user.drop() #删除集合(表)
#注:如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。
> use testdb #先切换到要删除的数据中
> db.dropDatabase() #删除数据库(需要先切换到要删除的数据库)
6.数据库以及表的操作
插入数据(insert和save一样)
db.user.insert({id:1,name:'zhangsan'})
db.user.save({id:1,name:'zhangsan'})
更新数据(更新不存在的数据,会新增字段))
db.user.update({id:1},{$set:{age:22}},true)
# 参考说明:
# 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.user.remove({age:25}) #删除所有符合条件的数据
db.user.remove({age:22},true) #删除1条数据
db.user.remove #删除所有数据
#为了简化操作,官方推荐使用deleteOne()与deleteMany()进行删除数据操作。
db.user.deleteOne({id:1})
db.user.deleteMany({}) #删除所有数据
# 参考说明:
# db.collection.remove(
# <query>,
# {
# justOne: <boolean>,
# writeConcern: <document>
# }
# )
# query :(可选)删除的文档的条件。
# justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
# writeConcern :(可选)抛出异常的级别。
查询数据
db.user.find() #查询全部数据
db.user.find({},{id:1,username:1}) #只查询id与username字段
db.user.find().count() #查询数据条数
db.user.find({id:1}) #查询id为1的数据
db.user.find({age:{$lte:21}}) #查询小于等于21的数据
db.user.find({age:{$lte:21}, id:{$gte:2}}) #and查询,age小于等于21并且id大于等于2
db.user.find({$or:[{id:1},{id:2}]}) #查询id=1 or id=2
#分页查询:Skip()跳过几条,limit()查询条数
db.user.find().limit(2).skip(1) #跳过1条数据,查询2条数据
db.user.find().sort({id:-1}) #按照age倒序排序,-1为倒序,1为正序
# 参考说明:
# db.user.find([query],[fields])
# query :可选,使用查询操作符指定查询条件
# fields :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。
7.索引
#查看索引
db.user.getIndexes()
#创建索引
db.user.createIndex({'age':1})
#删除索引
db.user.dropIndex("age_1")
#删除除了_id之外的索引
db.user.dropIndexes()
#创建联合索引
db.user.createIndex({'age':1, 'id':-1})
#查看索引大小,单位:字节
db.user.totalIndexSize()
补充:docker的安装与操作请参考:
https://blog.csdn.net/a1120467800/article/details/109957446