MongoDB 学习记录一

in with 0 comment

环境

我在本机的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术语/概念解释/说明
databasedatabase数据库
tabledatabase数据库表/集合
rowdatabase数据记录行/文档
columndatabase数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary 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({}) //删除所有数据