摘要
本文内容转自网络,个人学习记录使用,请勿传播
MongoDB数据存储
MongoDB是一个非关系型数据库(NoSQL). 非常适合超大数据集的存储, 由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
下面是Sql与mongodb的术语对比
SQL | Mongodb |
---|---|
表(Talbe) | 集合(Collection) |
行(Row) | 文档(Document) |
列(Col) | 字段(Field) |
主键(Primary Key) | 对象ID(ObjectId) |
一, MongoDB与安装(windows)
首先去官网下载MongoDB的安装包, https://www.mongodb.com/try/download/community
将mongodb目录下的bin文件夹添加到环境变量
对于mac的安装:https://blog.csdn.net/qq991658923/article/details/121436106
- Mac启动:
- mongod –dbpath /opt/mongodb/data –logpath /opt/mongodb/log/mongo.log –fork
- mongo
二, MongoDB的简单使用
简单介绍一下mongoDB中一些操作(了解)
1 | show dbs: 显示所有数据库 |
三, MongoDB的增删改查
1. mongodb中常见的数据类型(了解):
1 | Object ID: 主键ID【"_id" : ObjectId("56063f17ade2f21f36b03133")】 |
2. mongodb插入数据/文档
1 | #collection_name集合/表不存在则会新建 |
示例:
1 | db.c1.insert({name:"bobo", age:18, hobby:['eat', 'sleep']}) |
插入多条数据:
1 | #c1是表名/集合名 |
注意, 如果集合不存在. 则会自动创建集合
插入数据后可以查询所有数据查看是否插入成功:
1 | db.stu.find() |
3. mongodb修改数据
3.1 update更新
1 | #d1是表名 |
示例:
1 | db.d1.update({name:"bobo"}, {$set:{title:"alex", hobby:['抽烟', '喝酒', '烫头']}}, {multi:true}); |
4.mongodb删除数据
4.1 remove()
1 | db.collection_name.remove({条件}, {justOne:true|false}) |
示例:
1 | db.nor_col.remove({name:"jay"}, {justOne:true}) |
4.2 deleteOne()
1 | db.collection_name.deleteOne({条件}) |
示例:
1 | db.nor_col.deleteOne({name:"jay"}) |
4.3 deleteMany()
1 | db.collection_name.deleteMany({条件}) |
示例:
1 | db.nor_col.deleteMany({name:"jay"}) |
5. mongodb查询数据
准备数据:
1 | db.stu.insert([ |
5.1 普通查询
1 | db.c1.find() 查询所有 |
5.2 比较运算
1 | 等于: 默认是等于判断, $eq |
1 | db.stu.find({age:28}) 查询年龄是28岁的学生信息 |
5.3 逻辑运算符
- and
\$and: [条件1, 条件2, 条件3….]
1 | 查询年龄等于33, 并且, 名字是"大老王"的学生信息 |
- or
\$or: [条件1, 条件2, 条件3]
1 | 查询名字叫"李嘉诚"的, 或者, 年龄超过100岁的人 |
nor
\$nor: [条件1, 条件2, 条件3]
1 | 查询年龄不小于38岁的人, 名字还不能是朱元璋. |
5.4 范围运算符
使用\$in, \$nin判断数据是否在某个数组内
1 | db.stu.find({age: {$in:[28, 38]}}) 年龄是28或者38的人 |
5.5 正则表达式
使用$regex进行正则表达式匹配
1 | db.stu.find({address: {$regex:'^北京'}}) 查询地址是北京的人的信息 |
5.6 skip和limit
1 | db.stu.find().skip(3).limit(3) |
跳过3个. 提取3个. 类似limit 3, 3 可以用来做分页
5.7 排序
sort({字段:1, 字段:-1})
1表示升序
-1表示降序
1 | 对查询结果排序, 先按照age升序排列, 相同项再按照score降序排列 |
5.8 统计数量
count(条件) 查询数量
1 | db.stu.count({age:33}) |
四,pymongo的使用
python处理mongodb首选就是pymongo. 首先, 安装一下这个模块
1 | pip install pymongo |
建立连接
1 | import pymongo |
完成增删改查
1 | import pymongo |