如何快速选中当前页(如何快速选中内容)
615
2022-05-29
在工作室听闻老师要安排班上学生做 MongoDB 实训,身为工作室灌水王的我,整理了份 MongoDB 的学习入门资料,下面记录一下入门时经常使用到的mongoDB语句。
一、 关于 MongoDB
MongoDB 是开源文档数据库,是一个基于分布式文件存储的非关系型数据库。
MongoDB的基本概念是文档(document)、集合(collection)、数据库(database),文档是核心单元,像 {c:1} ; {s:“abcde”} 等,多个文档组成一个集合(相当于关系数据库的表)。
文档的数据结构和JSON基本一样,以 JSON 格式的文档保存数据。
所有存储在集合中的数据都是BSON格式,采用BSON存储文档数据。(BSON是一种类json的一种二进制形式的存储格式)
二、 安装 MongoDB
在浏览器输入localhost:27017 (MongoDB的端口号是27017),
查看是否连接成功。
也可以在任务管理器用鼠标操作 启动 、关闭 。
三、 使用 MongoDB
创建数据库 (如果数据库名不存在,则创建;否则切换指定数据库)
use 数据库名
查看所有数据库
show dbs
查看当前数据库 (MongoDB默认的数据库为test,如果没有创建新的数据库,集合将存放在test数据库中)
db //刚创建的数据库并不在数据库列表中,要显示它,需要向该数据库中插入数据
删除数据库 (删除当前数据库)
db.dropDatabase()
创建集合
db.createCollection('name',options) //例如:db.createCollection('student')
查询数据库中所有集合
show collections
对集合重命名
db.旧名.renameCollection('new name')
删除集合
db.集合名.drop()
特点:
可以声明集合容量的大小。
插入数据时,新文档会被插到队列末尾,当队列被占满时,最老的文档会被覆盖。
适用于想要自动删除属性的地方(比如日志、记录等只需保留最近时间内的应用情景)。
写入速度快(不建立索引;写入磁盘上的固定空间,所以不会因为其他集合一些随机性的写入操作而中断)。
注意:
创建后不能更改,只能删除或重建。
固定集合不能转为普通集合。
不能进行分片,不能删除文档(可以删除整个集合)。
可以进行更新(update),但更新不能让文档的size发生变化。
创建固定集合
db.createCollection("name",{capped,size}) /*例如:创建固定集合AAA,大小限制为1024个字节,文档数量限制为100。 db.createCollection("AAA",{capped:true,size:1024,max:100}) */
普通集合转固定集合 (没有限制文档数量的参数,即没有max的参数选项)
db.runCommand({"convertToCapped":"集合名","size":字节大小}) /*例如:将col集合转换为一个大小为1024字节的固定集合。 db.runCommand({"convertToCapped":"col","size":1024}) */
判断是否为固定集合 (判断后显示true或者false)
db.集合.isCapped()
查看集合属性
db.集合.stats()
使用 insert() 或 save() 向集合中插入文档(如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档)。
两者的区别:
当插入重复数据时:若新增数据的主键已经存在,insert会提示异常,不保存当前数据;save则会对当前已经存在的数据进行修改操作。
批操作时:insert可以一次性插入;而save需要一个个地插入。
插入单个文档
db.集合名.insert({需要插入的内容}) //例如:db.stuinfo.insert({_id:001,name:'alice',age:18})
插入单个文档(先定义再插入)
//定义一个值,再插入这个值 /*例如:s={_id:5,name:'张三',age:19} db.stuinfo.insert(s) */
插入多个文档
db.集合名.insert([{内容},{内容}]) //例如:db.foo.insert([{_id:3,name:'yu',age:18},{_id:4,name:'en',age:19}]) // 不要漏掉中括号
插入多条数据
//让其自加,再插入 /*例如:for(var i=1;i<10;i++) db.col.insert({count:i,test2:false,test5:true}) */
使用 update() 和 save() 方法来更新集合中的文档。
两者的区别:
update更新文档
db.集合.update({旧的},{$set:{新的}}) /*例如:db.stuinfo.update({name:'curry'},{$set:{name:'王五'}}) (以上语句只会修改第一条发现的文档) 如果要修改多条相同的文档,则需要设置 multi 参数为 true,如下: db.stuinfo.update({name:'curry'},{$set:{name:'王五'}},{multi:true}) */
save更新文档
db.集合名.save({内容}) //例如:db.stuinfo.save({_id:2,name:'curry',age:20})
使用 remove(),deleteOne() 或 deleteMany() 方法移除集合中的数据。
删除全部文档 (可以在括号内加条件)
db.集合名.deleteMany({}) 或 db.集合名.remove({}) //例如:db.foo.deleteMany({'test5':true})
删除全部文档 (remove用法)
db.集合.remove(
删除一个文档
db.集合名.deleteOne({}) //例如:db.foo.deleteOne({age:18})
查询文档 (可在括号内加查询条件)
db.集合名.find()
查询文档 (只查询第一条)
db.集合名.findOne()
查询文档 (格式化显示)
db.集合名.find().pretty()
多条件查询
// 在括号内加逗号分开条件 //例如:db.items.find({quantity:2,price:{$gte:4}})
等于
db.集合名.find({‘属性’:条件}) //例如:db.items.find({price:20})
小于 ($lt)
db.集合名.find({‘属性’:{$lt:条件}}) //例如:db.items.find({price:{$lt:5}})
小于或等于 ($lte)
db.集合.find({‘属性’:{$lte:条件}}) //例如:db.items.find({price:{$lte:5}})
大于 ($gt)
db.集合名.find({‘属性’:{$gt:条件}}) //例如:db.items.find({price:{$gt:5}})
大于或等于 ($gte)
db.集合.find({‘属性’:{$gte:条件}}) //例如:db.items.find({price:{$gte:10}})
不等于 ($ne)
db.集合.find({‘属性’:{$ne:条件}}) //例如:db.items.find({price:{$ne:20}})
使用 $in 或者 $nin 判断
db.集合.find({属性:{$in:[条件]}}) /*例如:查询年龄为18、19、20的学生。 db.stuinfo.find({'age':{$in:[18,19,20]}}) */
sort的用法(参数1为升序,-1为降序)
db.集合.find().sort({属性:参数}) /*例如:按照年龄升序排序。 db.stuinfo.find().sort({age:1}) 例如:按照年龄升序,主键降序排序。 db.stuinfo.find().sort({age:1,_id:-1}) */
查询指定数量的文档
db.集合.find().limit(数量) /*例如:查询2条信息。 db.stuinfo.find().limit(2) */
跳过指定数量的文档再查询
db.集合.find().skip(数量) /*例如:跳过2条数据再查询 db.stuinfo.find().skip(2) */
以上可以同时使用
//例如:db.stu.find().skip(5).limit(4)
文档通过一个或多个阶段(stage)组成管道,对管道进行分组、过滤等功能。
db.集合名.aggregate()
db.集合.aggregate([{$group:{_id:’id的名称’,’属性名’:{$sum:"$要统计的内容"}}}]) // 不要在要统计的内容前漏掉 $
使用聚合aggregate:
/*例如:统计price的总和 db.foo.aggregate([{$group:{_id:null,’总数’:{$sum:"$price"}}}]) 例如:通过产品类型分组,再统计卖出的数量 db.foo.aggregate([{$group:{_id:"$mold",total:{$sum:"$BBBB"}}}]) */
使用or语句(别漏掉中括号)
db.集合名.find({$or:[{key1: value1}, {key2:value2}]}) /*例如:查询AAA为10或价格大于等于5。 db.foo.find({$or:[{AAA:10},{price:{$gte:5}}]}) */
/*例如:查询AAA为“p003”且BBB为10或价格大于等于5的商品数据。 db.items.find({AAA:'p003',$or:[{BBB:10},{price:{$gte:5}}]}) */
/*例如:将相同的产品类型进行分组,统计各个产品数量,然后获取最大的数量。 db.items.aggregate([{$group:{_id:"$pnumber",total:{$sum:"$quantity"}}},{$group:{_id:null,max:{$max:"$total"}}}]) */
统计集合中文档的数目 (可以在括号内加条件)
db.集合名.count() /*例如: db.foo.count() db.foo.count({sex:'man'}) */
distinct的用法去重 (不要用大括号把去重字段也括进去)
db.集合.distinct(‘去重字段’,{条件}) //例如: db.stuinfo.distinct('王五',{age:{$gt:29}})
另外,推荐下载Navicat来管理数据库,使用Navicat操作数据库比较友好。
MongoDB 数据库
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。