一、简介
1.1应用场景
数据量大,写入操作频繁,价值密度低。
1.2体系结构
关系型数据库:数据库,表,行
mongodb数据库:数据库,集合,文档
二、数据库,集合操作
2.1数据库操作
创建:use库名
显示所有库:show databases(当数据库非空时才会显示)
显示当前数据库:db
删除:db.dropDatabase()
2.2集合操作
创建:db.createCollection(“name”)
显示:show collections
删除:db.集合.drop()
三、文档操作
3.1单个文档
创建:db.comment.insert(
{“article”:”100000”,
“content”:”你好”,
“createdatetime”:new Date(),
“likenum”:NumberInt(10),
“state”:null})
其中,comment是集合名,
如果该集合没有会自动创建
显示:db.comment.find()
3.2多个文档
创建:db.comment.insertMany([
{“_id”:”1”,
“content”:”你好”},
{“_id”:”2”,
“content”:”世界”}
])
注意:insertMany ,[]
3.3显示整个文档和一个文档:
db.comment.find()
db.comment.findOne({content:”你好”})
条件查询,只显示你好:
db.comment.find({content:”你好”},{_id:0})
3.4try-catch
try{
db.comment.insertMany([
{“_id”:”1”,
“content”:”你好”},
{“_id”:”2”,
“content”:”世界”}
]);
}catch(e){
print(e);
}
3.5文档更新
#修改id=1的记录,把点赞量改为1001
db.comment.update({_id:”1”},{likenum:NumberInt(1001)})
但是,这样修改只剩这个数据,其他都没了
#局部修改,只修改第一条数据
db.comment.update({userid:”1003”},{$set:{likenum:NumberInt(889)}})
#修改所有1003的数据
db.comment.update({userid:”1003”},{$set:{likenum:NumberInt(889)}},{multi:true})
#修改后值增加或减少
db.comment.update({_id:”1”},{$inc:{likenum:NumberInt(1)}})
1001->1002增加1
3.6删除文档
#删除id=1的数据
db.comment.remove({_id:”1”})
#删除全部
db.comment.remove({})
3.7文档分页查询
#计算有几个文档
db.comment.count()
#计算有几个文档里有user:”1003”
db.comment.count({user:”1003”})
#显示前n条文档,n=4时显示1-4
db.comment.find().limit(n)
#跳过前m条,显示后面n条,n=3,m=2时显示3,4,5条
db.comment.find().limit(n).skip(m)
3.8文档排序查询
#按userid升序排列
db.comment.find().sort({userid:1})
#按userid降序排列
db.comment.find().sort({userid:-1})
#如果userid相等,like降序排序
db.comment.find().sort({userid:1},{like:-1})
3.9文档正则查询
#文档中content包含你好的文档
db.comment.find({content:/你好/})
#文档中content你好开头的文档
db.comment.find({content:/^你好/})
3.10比较查询
文档中like大于700的文档
db.comment.find({like:{$gt:NumberInt(700)}})
文档中like小于700的文档
db.comment.find({like:{$lt:NumberInt(700)}})
文档中like大于等于700的文档
db.comment.find({like:{$gte:NumberInt(700)}})
文档中like小于等于700的文档
db.comment.find({like:{$lte:NumberInt(700)}})
文档中like不等于700的文档
db.comment.find({like:{$ne:NumberInt(700)}})
文档中user包含1003或1004
db.comment.find({user:{$in:[“1003”,”1004”]}})
文档中user不包含1003或1004
db.comment.find({user:{$nin:[“1003”,”1004”]}})
3.11条件连接
文档中like大于700且小于1000
db.comment.find({$and:[{like:{$gt:NumberInt(700)}},{like:{$lt:NumberInt(1000)}}]})
文档中like大于700或小于500
db.comment.find({$or:[{like:{$gt:NumberInt(700)}},{like:{$lt:NumberInt(500)}}]})
四、索引
4.1查看索引,默认_id为索引
db.comment.getIndexes()
4.2创建索引
db.comment.createIndex({userid:1})升序索引
db.comment.createIndex({userid:1},{like:-1})
4.3删除索引
db.comment.dropIndex({userid:1})
db.comment.dropIndexes()删除所有索引
4.4查看详细信息
db.comment.find({userid:”1003”}).explain()
看stage,fetch索引扫描,collscan全局扫描