MongoDB
关注公众号“轻松学编程”了解更多。
一、MongoDB安装
官网
MongoDB下载:https://www.mongodb.com/download-center?jmp=nav#community
个人:
链接:https://pan.baidu.com/s/1gButSqvSjMPRstRcm60Lgw 密码:dhwi
二、重要概念
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
- 数据库(database)
- 集合(collection)
- 文档
- 默认端口:27017
三、启动数据库
要手动启动服务
- mongod.exe --dbpath=xxx
- mongo.exe
四、、MongoDB的基本操作
1、数据库操作
- show dbs
- use mydb
- db或db.getName() 显示当前数据库
- db.dropDatabase() 删除当前数据库
- help
- exit
2、集合操作
- show collections
- db.createCollection(“student”) #创建空集合
- db.student.insert({name:“bill”,age:60,gender:1,address:“西雅图”,isDelete:0}) #如不存在student则会先创建
- db.student.drop()
3、文档操作
- 增加文档
db.student.insert({name:"bill",age:60,gender:1,
address:"广州",isDelete:0})
db.student.insert([{name:"robin",age:50,gender:1,
address:"北京",isDelete:0},{name:"jackma",age:50,gender:1,
address:"杭州",isDelete:0}])
db.student.save({name:"zarkberg",age:30,gender:1,
address:"硅谷",isDelete:0}) #无_id时为插入
- 删除文档
db.student.remove({"name":"jackma"},{"justOne":1})
- 修改文档
#修改
db.student.update({"name":"robin"},{$set:{"name":"lyh"}})
#新增
db.student.update({"name":"jackma"},{$inc:{"age":5}})
{"multi":true})
#可选的还有upset,为true时代表没有匹配文档时插入一个新的文档
"xiaozha", "age" : 30.0, "gender" : 1.0, "address" : "硅谷",
"isDelete":0})
#update中为$nc时,且有_id时为修改
4、查询
-
条件查找
- db.student.find() //查询全部
- db.student.find({gender:1},{name:1,address:1})//gender为1的所有数据的name和address列
- db.student.find({},{name:0,address:0})//所有数据的非name和非address列
- db.student.findOne({gender:1}) #查询一条
-
比较运算
- db.student.find({age:{$gt:40}})
- {$gt:40} 大于40
- {$gte:40} 大于等于
- {$lt:40} 小于40
- {$lte:40} 小于等于40
- {$eq:40} 等于40
- {$ne:40} 不等于40
- db.student.find({age:{$gt:40}})
-
AND OR
-
db.student.find({age:{$gte:50},gender:1}) //条件and db.student.find({$or:[{address:"北京"},{address:"硅谷"},{age:{$gte:60}}]}) //北京或硅谷的或年龄>=60的
db.student.find({age:{$gte:50},gender:1,$or:[{address:"北京"}, {address:"硅谷"},{age:{$gte:60}}]}) //and与or结合
-
-
整理结果
- db.student.find().count() //条数
- db.student.find().pretty() //格式化地显示结果
- db.student.find().limit(3) //查询3条
- db.student.find().sort({age:-1}) //按age降序排列,1为升序,-1为降序
- db.student.find().skip(3) //跳过前3条
- db.student.find().skip(6).limit(3) //数据分页:跳过前6条,然后取出3条,假设一页有3条,那么就相当于取第3页的数据
-
注意事项
- 区分大小写
五、图形化客户端
1、使用MongoChef
MongoChef非官方下载链接:https://pan.baidu.com/s/1XoAMrrm8Zw4ODm20NiABcQ 密码:g05r
2、新建连接:
3、sql编辑:
六、与Python的交互
1、导入模块
打开cmd窗口,输入命令:
pip install pymongo
代码:
import pymongo
conn = pymongo.MongoClient(host="127.0.0.1", port=27017)
db = conn.mydb
collection = db.student
'''
添加数据
'''
# 插入一个数据文档
collection.insert_one(
{"name": "sirouyang", "age": 18, "gender": 1, "address": "广州市", "isDelete": 0}
)
# 插入多个数据文档
collection.insert_many([
{"name": "小马哥", "age": 50, "gender": 1, "address": "大深圳", "isDelete": 0}
])
'''
查询数据
'''
# 查询文档个数
count = 0
for _ in collection.find():
count += 1
print('文档个数',count)
# 查询全部
ret = collection.find()
print('全部数据',[r for r in ret])
# 查询年龄大于18的数据
ret = collection.find(
{"age": {"$gt": 18}}
)
print('年龄大于18数据有',[r for r in ret])
# 查询年龄大于18且家住北京的数据
ret = collection.find(
{
"age": {"$gt": 18},
"address": "北京"
}
)
print('年龄大于18且家住北京有',[r for r in ret])
# 查询年龄大于40的,或30以下的硅谷人士
ret = collection.find(
{
"$or": [
{"age": {"$gt": 40}},
{"age": {"$lt": 30}, "address": "硅谷"}
]
}
)
print('年龄大于40的,或30以下的硅谷人士有',[r for r in ret])
# 查询结果按姓名降序排列
ret = collection.find().sort("name", pymongo.ASCENDING)
print('按姓名降序排列',[r for r in ret])
# 取前5个文档
ret = collection.find().limit(5)
print('前5个文档',[r for r in ret])
# 查询第二页的三个文档
ret = collection.find().skip(3).limit(3)
for item in ret:
print(type(item), item)
'''
修改数据
'''
# 执行更新:查询姓名为jobs的文档,姓名修改为"Steve Jobs",年龄减小20岁
ret = collection.update_one(
{"name": "jobs"},
{
"$set": {"name": "Steve Jobs"},
"$inc": {"age": -20}
}
)
'''
删除数据
'''
# 移除文档:移除年龄在55以上的文档数据
ret = collection.delete_one(
{"age": {"$gt": 55}}
)
# 关闭
conn.close()
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~