笔记.txt
mongo
use stu 创建一个stu数据库
show dbs 查看当前系统中数据库
show tables 查看数据库中集合
db.class.drop() 删除class这个集合
db.class2.insert({"name":"Tom","age":17,"sex":"m"}) 插入单个文档
insert([{},{},{}]) 插入多个文档
db.class1.save({name:'Lily',age:13,sex:'w'}) 插入文档
db.getCollection('class').insert({name:'Marry',age:16,sex:'w'})
db.class.find() 查找所有内容
findOne(query,field) 只查找第一条符合条件的文档
比较操作符
$eq $lt $lte $gt $gte $ne $in $nin不包含
逻辑操作符
$and $or $not $nor既不也不
数组查找
$all 查找数据中同时包含多项 db.class3.find({score:{$all:[56,78]}},{_id:0})
$size 通过数组元素个数查找 ({score:{$size:3}},{_id:0})
$slice 取出数组部分进行显示 放在field中
db.class3.find({},{_id:0,score:{$slice:2}}) 显示数组中前两项
db.class3.find({},{_id:0,score:{$slice:[1,1]}}) 跳过第一项显示后面一项
$exists 判断一个域是否存在 ({age:{$exists:true}},{_id:0})
$mod 余数查找 ({age:{$mod:[2,1]}},{_id:0})
$type 找出值为指定类型的文档 ({age:{$type:1}},{_id:0})
distinct() 查看集合某个域的取值范围 db.class3.distinct("age") #[ 9, 8 ]
pretty() 格式化显示查找结果 db.class3.find().pretty()
limit(n) 显示查找结果的前n条 ({},{_id:0}).limit(3)
skip(n) 跳过前n条显示 db.class3.find({},{_id:0}).skip(3)
count() 计数统计 db.class3.find({sex:'m'},{_id:0}).count()
sort({域:1/-1}) 1表示升序 ({},{_id:0}).sort({age:1})
db.class3.remove({}) 删除class3中所有文档
db.class3.remove({age:13},true) 只删除第一条符合条件的
$set 修改一个域的值,或者增加一个域
db.class.update({age:18},{$set:{name:'小魏'}})
$unset 删除一个域 db.class.update({name:'小魏'},{$unset:{sex:''}})
$rename 修改一个域的名称 ({},{$rename:{sex:'gender'}},false,true)
$setOnInsert 补充插入内容 ({name:'Tom'},{$set:{age:17},$setOnInsert:{gender:'m',tel:'12345'}},true)
$inc 加减修改器 ({},{$inc:{age:1},false,true)
$mul 乘法修改器 ({name:'Tom'},{$mul:{age:2})
$max ({},{$max:{age:20},false,true) 将年龄不到20的修改为20
$min
数组修改器
$push 向数组中添加一项 db.class3.update({name:'小明'},{$push:{score:5}})
$pushAll 向数组中添加多项 ({name:'小明'},{$pushAll:{score:[5,10]}})
$pull 从数组中删除一项 ({name:'小红'},{$pull:{score:10}})
$pullAll 删除数组中多项 ({name:'小明'},{$pullAll:{score:[10,6]}})
$each 对多个值逐一操作 ({name:'小明'},{$push:{score:{$each:[5,6]}}})
$position 指定插入位置 ({name:'小红'},{$push:{score:{$each:[10],$position:1}}})
$sort 对数组进行排序 ({name:'小红'},{$push:{score:{$each:[],$sort:1}}})
$pop 弹出一项 ({name:'小红'},{$pop:{score:-1}}) -1表示删除第一项
$addToSet 向数组中添加一项,不能和已有的内容重复 ({name:'小红'},{$addToSet:{score:87}})
时间类型 ISODate()
new Date() 自动生成当前时间
ISODate() 生成当前时间
Date() 将生成的当前时间变为字符串存储
valueOf() 将时间转换为时间戳
mongodb创建索引
ensureIndex() 创建索引 db.class.ensureIndex({name:1}) 1表示正序
db.class.ensureIndex({name:1,age:-1})
db.class.getIndexes() 查看一个集合中的索引
dropIndex() 删除索引 db.class.dropIndex({'age_index'})
dropIndexes() 删除所有索引 除了_id
db.class1.ensureIndex({name:1},{unique:true}) 唯一索引
db.class1.ensureIndex({age:1},{sparse:true}) 稀疏索引
db.collection.aggregate() 聚合操作
$group 分组聚合
$sum: 求和 db.class1.aggregate({$group:{_id:'$sex',num:{$sum:1}}})
以sex域下的值分类,每有一个就加一,和的名称为num
$avg 求平均
$max 最大值
$min 最小值
$project 用于修改文档的显示效果
db.class.aggregate({$project:{_id:0,Name:'$name',Age:'$age'}})
name域名称显示改为Name
$match 过滤数据
db.class.aggregate({$match:{age:{$gt:10}}}) 只显示年龄大于10的
聚合操作
$limit 显示前几条文档 db.class.aggregate({$limit:2})
$skip 跳过几条文档 ({$skip:2}) 跳过前两条
$sort 排序 ({$sort:{age:1}}) 按年龄升序
聚合管道
db.collection.aggregate([聚合1,聚合2....])
db.class.aggregate([{$match:{sex:'m'}},{$project:{_id:0}},{$sort:{age:1}}]
固定集合
db.createCollection(collection,{capped:true,size:10000,max:1000})
capped:true 表示创建固定集合
size: 表示集合的大小 bytes 最小4096
max: 表示最多存放多少文档
文件存储
GridFS方案解释
fs.files 用来存储文件的相关信息
fs.chunks 用来分块存储文件的实际内容
mongofiles -d dbname put file
数据库 要存储的文件