MongoDB

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张图片

MongoDB_第2张图片

三、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({
      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张图片

3、sql编辑:

MongoDB_第4张图片

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

你可能感兴趣的:(NoSQL)