-
一:简介
-
MongoDB是一个非关系型数据库(NoSQL). 非常适合超大数据集的存储, 由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

-
二:MongoDB安装(windows)


-
配置环境变量
- 将mongodb目录下的bin文件夹添加到环境变量
-
三: MongoDB的简单使用
db: 当前正在使用的数据库
show dbs: 显示所有数据库
show databases: 显示所有数据库
use xxxx: 调整数据库
db.dropDatabase(): 删除数据库
show collections: 显示当前数据库中所有的集合(表)
db.collection_name.insert({})
db.createCollection(name, {options}) 创建集合 capped:是否卷动, size:大小
db.collection_name.drop() 删除集合
db.collection_name.insert() 向集合中添加数据( 如果该集合不存在, 自动创建)
db.collection_name.isCapped() 判断是否有容量上限(判断该集合是否是固定容量的集合)
-
四:增删改查
-
4.1增
db.collection_name.insert({字段:值,字段:值})
db.collection_name.insertOne({字段:值,字段:值})
db.collection_name.insertMany([{}, {}])
注意, 如果集合不存在. 则会自动创建集合
-
4.2删除
db.collection_name.remove({条件}, {justOne:true|false}) justOne : (可选)如果设为 true 或 1,则只删除一个文档。
db.collection_name.remove() 删除所有记录
db.collection_name.drop() 删除collection/表
db.collection_name.deleteOne({条件})
db.collection_name.deleteMany({条件})
-
4.3修改
db.collection_name.update({查询条件}, {待修改内容}, {multi: 是否多条数据修改})
multi:true表示修改满足条件所有的内容,否则只修改满足条件的第一条内容,multi不写默认为false
示例:
db.nor_col.update({name:"樵夫"}, {$set:{title:"alex", hobby:['抽烟', '喝酒', '烫头']}}, {multi:true});
db.nor_col.update({name:"樵夫"}, {title:"alex"})
$set和没有$set的区别:
$set只会修改当前给出的字段, 其他内容保留
没有$set只会保留当前给出字段, 其他内容删除
mutil: 如果为True, 必须用$set. 否则报错.
-
4.4查询
db.stu.insert([
{name: "朱元璋", age:800, address:'安徽省凤阳', score: 160},
{name: "朱棣", age:750, address:'江苏省南京市', score: 120},
{name: "朱高炽", age:700, address:'北京紫禁城', score: 90},
{name: "李嘉诚", age:38, address:'香港xxx街道', score: 70},
{name: "麻花藤", age:28, address:'广东省xxx市', score: 80},
{name: "大老王", age:33, address:'火星第一卫星', score: -60},
{name: "咩咩", age:33, address:'开普勒225旁边的黑洞', score: -160}
])
- 4.4.1:普通查询
db.stu.find({条件}) 查询所有
db.stu.findOne({条件}) 查询一个
db.stu.find().pretty() 将查询出来的结果进行格式化(好看一些)
- 4.4.2:比较运算
等于: 默认是等于判断, $eq
小于:$lt (less than) <
小于等于:$lte (less than equal) <=
大于:$gt (greater than)>
大于等于:$gte >=
不等于:$ne !=
示例:
db.stu.find({age:28}) 查询年龄是28岁的学生信息
db.stu.find({age: {$eq: 28}}) 查询年龄是28岁的学生信息
db.stu.find({age: {$gt: 30}}) 查询年龄大于30岁的学生
db.stu.find({age: {$lt: 30}}) 查询年龄小于30岁的学生
db.stu.find({age: {$gte: 38}}) 查询年龄大于等于30岁的学生
db.stu.find({age: {$lte: 38}}) 查询年龄小于等于30岁的学生
db.stu.find({age: {$ne: 38}}) 查询年龄不等于38的学生
- 4.4.3:逻辑运算符
$and: [条件1, 条件2, 条件3....]
查询年龄等于33, 并且, 名字是"大老王"的学生信息
db.stu.find({$and:[{age: {$eq:33}}, {name:'大老王'}]})
$or: [条件1, 条件2, 条件3]
查询名字叫"李嘉诚"的, 或者, 年龄超过100岁的人
db.stu.find({$or: [{name: '李嘉诚'}, {age: {$gt: 100}}]})
$nor: [条件1, 条件2, 条件3]
查询年龄不小于38岁的人, 名字还不能是朱元璋.
db.stu.find({$nor: [{age: {$lt: 38}}, {name: "朱元璋"}]})
- 4.4.4:范围运算符
使用\$in, \$nin判断数据是否在某个数组内
db.stu.find({age: {$in:[28, 38]}}) 年龄是28或者38的人
- 4.4.5:正则表达式
使用$regex进行正则表达式匹配
db.stu.find({address: {$regex:'^北京'}}) 查询地址是北京的人的信息
db.stu.find({address: /^北京/}) 效果一样
- 4.4.6:skip和limit
db.stu.find().skip(3).limit(3)
跳过3个. 提取3个. 类似limit 3, 3 可以用来做分页
- 4.4.7:投影
投影可以控制最终查询的结果(字段筛选)
db.stu.find({}, {字段:1, 字段:1})
需要看的字段给1就可以了.
注意, 除了_id外, 0, 1不能共存.
- 4.4.8: 排序与统计
sort({字段:1, 字段:-1})
1表示升序,-1表示降序
count(条件) 查询数量
db.stu.count({age:33})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2022-04-30 python之进程&线程理论