目录
1. mongodb库命令
查看当前数据库:db(没有切换数据库的情况下,默认使用test数据库)
查看所有数据库:show dbs
切换数据库:use db_name
删除当前数据库:db.dropDatabase()
2. mongodb集合命令
mysql结构:库,表,数据
mongodb结构:库,集合,文档
不手动创建集合:向不存在的集合中第一次插入数据时,集合会被创建出来
也可以手动创建:
db.createCollection('集合名')
db.createCollection("集合名", { capped : true, size : 10 } )
参数capped: 默认值为false,表示不设置上限,值为true表示设置上限
参数size: 当capped值为true时, 需要指定此参数, 表示上限10,当文档达到上限时, 会将之前的数据覆盖, 单位为字节
查看集合:show collections
删除集合:db.集合名称.drop()
检查集合是否有上限: db.集合名.isCapped()→返回True或False
3. mongodb中常见数据类型
Object ID:文档ID
String:字符串,最常用,必须是有效的utf-8
Boolean:存储一个布尔值
Integer:整数可以是32位或64位,取决于服务器
Double:存储浮点值
Arrays:列表,多个值存储到一个键
Object:用于嵌入式的文档,即值为文档
Null:存储Null值
Timestamp:时间戳,表示从1970-1-1到现在的总秒数
Date:存储当前日期或时间的UNIX时间格式
注意点:每个文档都有_id属性,保证每个文档的唯一性,mongodb默认使用_id作为主键,类型为Object ID,objectID是一个12字节的十六进制数,每个字节两位,一共是24 位的字符串: 前4个字节为当前时间戳 接下来3个字节的机器ID 接下来的2个字节中MongoDB的服务进程id 最后3个字节是简单的增量值(计数器)
4. mongodb的增删改查
增:
db.集合名.insert({name:'lili',gender:1})
如果不指定_id参数,会自动分配一个唯一的Object ID
db.集合名.save({_id:"20180808",name:'lili',gender:1})
如果_id存在则修改,不存在则添加
删:
db.集合名.remove({条件,如gender:1},{justOne: false/true})
参数justOne:可选, 如果设为true或1, 则只删除1条, 默认false, 表示删除多条
改:
db.集合名.update({条件}, {$set:{文档/更新的内容}}, {multi:false/true}) 默认是false,表示只更新找到的第一条数据,true表示满足条件的全部更新
查:
db.集合名.find({条件}) 查询集合中的所有文档
db.集合名称.find({条件}).pretty() 格式化输出,配合find使用
db.集合名称.findOne({条件}) 返回一条
比较运算符:
不等于:$ne
小于:$lt
小于等于:$lte
大于:$gt
大于等于:$gte
逻辑运算符:
与:直接在文档中写多个条件即可
如:db.stu.find({age:18,gender:true})
或:使用$or,在列表中写条件
如:db.stu.find({$or:[{age:18},{gender:false}]})
范围运算符:
使用$in, $nin查找的数据条件范围在某个数组内,满足条件的数据都
db.stu.find({age:{$in:[18,20]}}) 查找年龄为18或者20的数据
正则表达式:
使用//或$regex编写正则表达式
查询name以‘赵’开头的数据 db.stu.find({name:/^赵/}) 或:db.stu.find({name:{/$regex:'^赵'}})
自定义查询:
由于mongo的shell是一个js的执行环境,在$where后写一个函数,返回满足条件的数据
db.stu.find({
$where:function() {
return this.age>30;}
})
skip和limit
limit:查询指定数量的文档
db.集合名.find()limit(指定数量)
skip:跳过指定数量的文档
db.集合名.find().skip(指定数量)
同时使用(先skip再limit效率高于xianlimit后skip):
db.集合名.find(指定数量).skip().limit(指定数量)
投影:
在查询到的结果中,只显示指定的字段
db.stu.find({},{_id:0,name:1,gender:1})
参数为字段与值, 值为1表示显示, 值为0不显 特别注意: 对于_id列默认是显示的, 如果不显示需要明确设置为0
排序:
db.stu.find().sort({age:1}) 参数为1:升序,参数-1:降序
统计个数:
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
消除重复:
db.集合名称.distinct('去重字段',{条件})
db.stu.distinct('city',{age:{$gt:18}}) 查出年龄大于18的所有文档,对城市去重