MongoDB快速入门
一.实践步骤
代码语言:javascript代码运行次数:0运行复制//查询数据库
show dbs
//使用数据库
use config
//use一个不存在的数据库等于新建
use human
//创建一个集合 --显示创建
db.createCollection("student")
//在指定数据库下执行删除操作
db.dropDatabase()
//在数据库的集合中插入文档 如果student集合不存在就会隐式创建
db.student.insertOne({name:"Joe",age:30,GPA:3.2})
//集合查询到文档
db.student.find()
//在admin数据库中获取用户
db.getUsers()
//查看当前数据库名
db
//查看表/集合
show tables
show collections
//文档插入
dbment.insertOne({
"articleid": "100000",
"content": "今天天气真好,阳光明媚",
"userid": "1001",
"nickname": "Rose",
"createdatetime":new Date(),
"likenum":NumberInt(10),
"state": null
})
//文档批量插入
dbment.insertMany([
{"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date("2019-0805T22:08:15.522Z"),"likenum":NumberInt(1000),"state":"1"},
{"_id":"2","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔悴","createdatetime":new Date("2019-08-05T23:58:51.485Z"),"likenum":NumberInt(888),"state":"1"},
{"_id":"3","articleid":"100001","content":"我一直喝凉开水,冬天夏天都喝。","userid":"1004","nickname":"杰克船长","createdatetime":new Date("2019-08-06T01:05:06.321Z"),"likenum":NumberInt(666),"state":"1"},
{"_id":"4","articleid":"100001","content":"专家说不能空腹吃饭,影响健康。","userid":"1003","nickname":"凯撒","createdatetime":new Date("2019-08-06T08:18:35.288Z"),"likenum":NumberInt(2000),"state":"1"},
{"_id":"5","articleid":"100001","content":"研究表明,刚烧开的水千万不能喝,因为烫嘴。","userid":"1003","nickname":"凯撒","createdatetime":new Date("2019-0806T11:01:02.521Z"),"likenum":NumberInt(3000),"state":"1"}
]);
//查询文档
dbment.find()
dbment.find({})
dbment.find({userid:'1003'})
dbment.findOne({userid:'1003'})
//投影查询 只需要返回部分参数
dbment.find({userid:"1003"},{userid:1,nickname:1}) //后面这个1代表包含 0代表启用
dbment.find({},{userid:1})
//修改
db.student.find()
db.student.updateOne({_id:ObjectId("67db87dd8044bf4f12d12be0")},{$set:{age:NumberInt(20)}});
//批量修改
db.student.insertOne({name:"Zg",age:30,GPA:5.2});
db.student.updateMany({age:NumberInt(20)},{$set:{GPA:5.0}});
//统计查询
db.student.count({name:"Zg"})
db.student.count()
//分页查
db.student.find().limit(1)
dbment.find().limit(2).skip(0)//第一页
dbment.find().limit(2).skip(2)//第二页
dbment.find().limit(2).skip(4)//第三页
//排序
dbment.find().sort({userid:-1,likenum:1}) //用户id倒序 喜爱量正序
//正则模糊查
dbment.find({content:/开水/})
dbment.find({content:/^专家/})//xx开头的
//比较查询
//$gt 大于
//$lt 小于
//$gte 大于等于
//$lte 小于等于
//$ne 不等于
db.student.find({ "age" : { $gt: 29 }}) // 大于: field > value
//包含与不包含查询
dbment.find({userid:{$in:["1003","1004"]}})
dbment.find({userid:{$nin:["1003","1004"]}})
//条件连接查询 $and和$or
dbment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})//查询评论集合中likenum大于等于700 并且小于2000的文档
dbment.find({$or:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})//查询评论集合中likenum大于等于700 或者小于2000的文档
二.汇总
代码语言:javascript代码运行次数:0运行复制//选择切换数据库:
use articledb
//插入数据:
dbment.insert({bson数据})
//查询所有数据:
dbment.find();
//条件查询数据:
dbment.find({条件})
//查询符合条件的第一条记录:
dbment.findOne({条件})
//查询符合条件的前几条记录:
dbment.find({条件}).limit(条数)
//查询符合条件的跳过的记录:
dbment.find({条件}).skip(条数)
//修改数据:
dbment.update({条件},{修改后的数据}) 或dbment.update({条件},{$set:{要修改部分的字段:数据})
//修改数据并自增某字段值:
dbment.update({条件},{$inc:{自增的字段:步进值}})
//删除数据:
dbment.remove({条件})
//统计查询:
dbment.count({条件})
//模糊查询:
dbment.find({字段名:/正则表达式/})
//条件比较运算:
dbment.find({字段名:{$gt:值}})
//包含查询:
dbment.find({字段名:{$in:[值1,值2]}})或dbment.find({字段名:{$nin:[值1,值2]}})
//条件连接查询:
dbment.find({$and:[{条件1},{条件2}]})或dbment.find({$or:[{条件1},{条件2}]})
三.索引
代码语言:javascript代码运行次数:0运行复制//索引查询
dbment.getIndexes()
dbment.find()
//创建索引
dbment.createIndex({userid:1})
//复合索引创建
dbment.createIndex({userid:1,nickname:-1})//1升序 -1降序
//移除索引
dbment.dropIndex({userid:1})
dbment.dropIndexes()//删除所有索引 _id的字段的索引是无法删除的
//分析查询性能 常用执行计划工具 (解释计划、Explain Plan)
dbment.find({userid:"1003"}).explain()
//执行计划阶段(Stage) 描述
//COLLSCAN 全集合扫描,效率较低。
//IXSCAN 索引扫描,效率较高。
//FETCH 从索引中获取完整的文档数据。
//SORT 对查询结果进行排序。
//LIMIT 限制查询结果的数量。
//SKIP 跳过指定数量的文档。
//PROJECTION 选择返回的字段。