摘要:介绍了mongodb安装方法,以及基本使用,基础命令,集合,数据类型,增删改查,聚合,高级操作,对日常用到的方法汇总
安装mongodb:
安装网址:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
关于database的基础命令
查看当前的数据库:db
查看所有的数据库:show dbs 或者 show databases
切换数据库:use db_name
删除当前的数据库:db.dropDatabase()
关于集合的基础命令
不手动创建集合: 向不存在的集合中第⼀次加⼊数据时, 集合会被创建出来 手动创建结合:
db.createCollection(name,options)
db.createCollection("stu")
db.createCollection("sub", { capped : true, size : 10 })
#参数capped: 默认值为false表示不设置上限,值为true表示设置上限
#参数size: 当capped值为true时, 需要指定此参数, 表示上限⼤⼩,当⽂档达到上限时, 会将之前的数据覆盖, 单位为字节
#查看集合:
show collections
#删除集合:
db.集合名称.drop()
#查看集合内容:
db.collections_name.find()
数据类型
Object ID: ⽂档ID
String: 字符串, 最常⽤, 必须是有效的UTF-8
Boolean: 存储⼀个布尔值, true或false
Integer: 整数可以是32位或64位, 这取决于服务器
Double: 存储浮点值
Arrays: 数组或列表, 多个值存储到⼀个键
Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
Null: 存储Null值
Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
Date: 存储当前⽇期或时间的UNIX时间格式
注意点
-
创建⽇期语句如下 :参数的格式为YYYY-MM-DD
-
new Date(‘2017-12-20’)
-
每个⽂档都有⼀个属性, 为_id, 保证每个⽂档的唯⼀性
-
可以⾃⼰去设置_id插⼊⽂档,如果没有提供, 那么MongoDB为每个⽂档提供了⼀个独特的_id, 类型为objectID
-
objectID是⼀个12字节的⼗六进制数:
-
前4个字节为当前时间戳
-
接下来3个字节的机器ID
-
接下来的2个字节中MongoDB的服务进程id
-
最后3个字节是简单的增量值
插入
db.集合名称.insert(document)
db.stu.insert({name:'gj',gender:1})
db.stu.insert({_id:"20170101",name:'gj',gender:1})
# 插⼊⽂档时, 如果不指定_id参数, MongoDB会为⽂档分配⼀个唯⼀的ObjectId
保存
db.集合名称.save(document)
#如果⽂档的_id已经存在则修改, 如果⽂档的_id不存在则添加
简单查询
db.集合名称.find()
mongodb的启动
sudo mongod --config /etc/mongod.conf &
mongodb的基础操作
- 增加
db.collection_name.insert({})
#id相同会报错,不同能够插入
db.collection_name.save({})
#id相同会更新其他字段,不同会插入
- 更新
db.collections.update({条件},{内容})
#把原始的满足条件的第一条记录更新为`内容`
db.collections.update({},{$set:{更新的字段}},{multi:ture})
#仅仅跟新字段,加上multi条件会更新全部
- 删除
db.collections_name.remove({条件})
#会把满足条件的全部删除
投影
#决定哪些字段需要输出,哪些不需要输出
find({查询条件},{投影条件})
`_id`:默认会输出,不需要的时候,`_id:0`
#其他字段,默认不会输出,需要的时候,字段名:1
统计数量
db.collection_name.find({条件}).count()
db.collection_name.count({条件})
去重
db.collection\_name.distinct\("去重字段名",{查询条件}\)
#返回一个数组,数组中是去重之后的字段值
增删改查
- 增
- db.col.insert({})
- db.col.save({})
- 删
- db.col.remove({条件})
- 改
- db.col.update({条件},{$set:{name:"jack"}})
- 查
- db.col.find({条件})
高级查询
- 与和或
- 与 db.col.find({name:"jack",age:30})
- 或 db.col.find({$or:[{条件1},{条件2},{条件3}]})
- 比较运算符
- $gt
- $gte
- $lt
- $lte
- $ne
- 范围运算符
- $in eg. db.col.find({age:{$in:[18,28,38]}})
- $nin
- 正则
- db.col.find({name:/正则/})
- db.col.find({name:{$regex,"正则"}})
- 投影
- `db.col.find({},{name:1,_id:0})`
- sort
- db.col.find({}).sort(name:1)
- skip
-
- limit
-
- count
- db.col.find({条件}).count()
- db.col.count({条件})
- distinct
- db.col.distinct("age",{条件})
- 返回数组
聚合
- $group
- db.col.aggregate({$group:{_id:"$name",count:{$sum:1}}})
- db.col.aggregate({$group:{_id:null,count:{$sum:"$age"}}})
- $match
- db.col.aggregate({$match:{age:{$gt:28}}})
- $project
- db.col.aggregate({$project:{_id:0,name:1}})
- $sort
- $limit
- $skip
- $unwind
- db.col.aggregate({$unwind:"$size")