MongoDB
程序员文章站
2024-01-22 21:44:34
...
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
-
AND OR
- “`mysql
db.student.find({age:{or:[{address:"北京"},{address:"硅谷"},{age:{$gte:60}}]}) //北京或硅谷的或年龄>=60的```mysql db.student.find({age:{$gte:50},gender:1,$or:[{address:"北京"}, {address:"硅谷"},{age:{$gte:60}}]}) //and与or结合
- “`mysql
-
整理结果
- 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、导入模块
模块引入参考:
https://blog.csdn.net/lm_is_dc/article/details/80099727
中的安装第三方模块
模块名称:pymongo。
2、 建立与MongoDB的连接
conn = pymongo.MongoClient( host=”127.0.0.1”,port=27017 )
3、指定数据库与集合
db = conn.mydb
collection = db.student
4、增删改查
CRUD
-
Create 增
# 插入一个数据文档 collection.insert( {"name": "sirouyang", "age": 18, "gender": 1, "address": "广州市", "isDelete": 0} ) # 插入多个数据文档 collection.insert([ {"name": "小马哥", "age": 50, "gender": 1, "address": "大深圳", "isDelete": 0}, "isDelete": 0} ])
-
Retrieve 查
# 查询文档个数 ret = collection.find().count() print(ret) # 查询全部 ret = collection.find() # 查询年龄大于18的数据 ret = collection.find( {"age": {"$gt": 18}} ) # 查询年龄大于18且家住北京的数据 ret = collection.find( { "age": {"$gt": 18}, "address": "北京" } ) # 查询年龄大于40的,或30以下的硅谷人士 ret = collection.find( { "$or": [ {"age": {"$gt": 40}}, {"age": {"$lt": 30}, "address": "硅谷"} ] } ) # 查询结果按姓名降序排列 ret = collection.find().sort("name", pymongo.ASCENDING) # 取前5个文档 ret = collection.find().limit(5) # 查询第二页的三个文档 ret = collection.find().skip(3).limit(3) for item in ret: print(type(item), item)
-
Update 改
# 执行更新:查询姓名为jobs的文档,姓名修改为"Steve Jobs",年龄减小20岁 ret = collection.update( {"name": "jobs"}, { "$set": {"name": "Steve Jobs"}, "$inc": {"age": -20} } )
-
Delete 删
# 移除文档:移除年龄在55以上的文档数据 ret = collection.remove( {"age": {"$gt": 55}} )
5、 断开连接
conn.close()
上一篇: Oracle中条件表达式