MongoDB Shell操作
目录
3.1 插入文档(insert|insertOne|insertMany)
3.2 删除文档(remove|deleteOne|deleteMany)
1 数据库操作
当新创建的数据库里没有插入数据时,并不会被查询到相应的信息,只有插入数据的数据库才会显示其相应的信息。
在对某个数据库进行相关操作时,需先使用use命令选择执行该数据库。
2 集合操作
🏅普通集合操作
🏅定长集合操作
3 文档操作
3.1 插入文档(insert|insertOne|insertMany)
3.2插入、删除的循环操作
💥循环插入10条数据
for(var i=1,age=20;i<=10;i++,age++)db.stu.insert({name:"jack"+i,age:age})
💥将一个集合的数据插入到另一个新建集合
db.stu1.find().forEach(function(x)){db.stu2.insert(x);}
💥循环修改集合中的文档数据
for(var i=6;i<=10;i++)db.stu2.update({"name":["jack"+i,"tom"+i]},{$set:{"name":"tom"+i}})
3.2 删除文档(remove|deleteOne|deleteMany)
3.3 更新文档(update|save)
save与update命令的区别:
- save按_id进行匹配查找,修改的文档若存在就进行修改,若不存在则创建该文档并插入集合
- update按条件匹配查找,修改的文档若存在就进行修改,若不存在则会抛异常
3.4 查询文档(find)
比较条件 | 符号 | 事例 |
等于 | : | db.stu.find({price:24}) |
大于 | $gt: | db.stu.find({price:{$gt:24}}) |
小于 | $lt: | db.stu.find({price:{$lt:24}}) |
大于等于 | $gte: | db.stu.find({price:{$gte:24}}) |
小于等于 | $lte: | db.stu.find({price:{$lte:24}}) |
不等于(数值) | $ne: | db.stu.find({price:{$ne:24}}) |
不等于(字符串) | $not: | db.stu.find({name:{$not:"《MongoDB 教程》"}}) |
与 | { , ,} | db.stu.find({price:{$gt:24}},{name:"《MongoDB教程》"}) |
或 | $or[{ , ,}] | db.stu.find({$or:[{price:{$gt:24}},{name:"《MongoDB教程》"}]}) |
包含 | $in: | db.stu.find({price:{$in:[23,24,25]}}) |
不包含 | $nin: | db.stu.find({price:{$nin:[23,24,25]}}) |
包含元素个数 | $size: | tags属性中值为数组且包含三个元素的 db.stu.find(tags:{$size:3}}) |
配合find使用的其它方法
4 游标
db.stu.find()返回的就是一个游标,可以声明一个变量进行接收,它是数据遍历过程中的内部指针,是数据读取的接口。
游标使用find方法返回,故上面说到配合find方法使用的sort、limit、skip等方法也可以使用,此外还有hint方法(强制使用索引进行查询)。
5 索引
什么叫索引呢?在没有索引的情况下,用户要是想要查询某个文档的话就必须扫描集合中的所有文档,来选择与查询条件相匹配的文档。然而,在有索引存在的情况下,用户可以先查询索引中是否有想要查询的文档,如果有的情况下就可以直接读,从而节约了大量的时间。
索引的优点:提升文档的查询速率。相对而言,因为插入新的文档会引起索引顺序的重拍,从而会降低插入、更新的速率。
MongoDB的索引基于B-tree数据结构,MySQL的索引基于B+tree数据结构。
6 聚合
对返回的文档进行统计分析,使用aggregate方法实现。
💥管道操作:$match(过滤) $group(分组) $project(显示字段) $sort(排序) $limit(限制) $skip(跳过)
💥聚合运算符: $sum(求和) $avg(均值) $min(最小值) $max(最大值) $first $last $push
分组求和的两种方式
- 点赞
- 收藏
- 关注作者
评论(0)