环境
我在本机的vbox上开了一个centos7 64位的虚拟机,就以此为基础环境吧
安装
网上搜索了一下mongodb的安装,可以说真的很乱,还需要各种其他的环境,所以这里直接使用docker提供的mongo镜像,不得不说是真的简单好用。
docker pull mongo --获取mongo镜像
docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo --启动mongo镜像
docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq) --查看镜像的ip地址
docker run -it mongo mongo --host ip --连接mongodb
SQL 对比
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | database | 数据库表/集合 |
row | database | 数据记录行/文档 |
column | database | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
指令
连接
mongo mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
eg: mongo mongodb://172.17.0.2:27017/test
数据库
//创建数据库,如果没有当前数据库,则会创建一个新的
use database
//显示当前使用的数据库
db
//显示所有数据库
show dbs
//删除数据库,删除当前使用的数据库
db.dropDatabase()
集合
//在当前数据库创建集合
db.createCollection(name,options)
eg: db.createCollection("myTable")
eg: db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
//删除当前数据库中的某个集合
db.collection.drop()
eg: db.myTable.drop()
//获取当前数据库的所有集合
show collections
文档
//在当前数据库的某个集合中插入文档,如果当前集合不存在,自动创建
db.collection.insert(doc);
eg: db.myTable.insert({"name":"Felix"})
//查看集合中的文档信息
db.collection.find()
//根据条件查看集合中的文档信息
db.collection.find(query)
db.collection.find().pretty() // 格式化返回结果
//更新
db.collection.update(query,update,options)
eg: db.myTable.update({"name":"Felix"},{$set:{"name":"sxhjhf"}})
//保存,如果_id存在,功能同更新
db.collection.save(doc)
//删除, justone默认为false,删除所有匹配数据,为true或者1,只删除第一个
db.collection.remove(query,justone)
eg: db.collection.remove({}) //删除所有数据