MongoDB数据库

一、简介

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全局扫描

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值