欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

MongoDB

三、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:{gte:50},gender:1})  //条件and  db.student.find({or:[{address:"北京"},{address:"硅谷"},{age:{$gte:60}}]}) //北京或硅谷的或年龄>=60的
      
      ```mysql
      db.student.find({age:{$gte:50},gender:1,$or:[{address:"北京"},
      {address:"硅谷"},{age:{$gte:60}}]}) //andor结合

  • 整理结果

    • 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、新建连接:

MongoDB

3、sql编辑:

MongoDB

四、与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()