zoukankan      html  css  js  c++  java
  • 数据库之mongodb

    启动mongodb服务端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb.conf

    停止mongodb服务端: sudo service mongodb stop

    查询mongodb服务器状态命令查询状态
    ps -ajx|grep mongod 或者 sudo systemctl status mongodb

    数据库操作

    进入数据库:mongo

    显示所有的数据库:show databases ->show dbs

    查看选手某个数据库:db

    数据库切换(选择和创建):use 数据库名  ps: use test  默认是不会出现这个数据库,除非创建集合才会出现

    查看当前数据库名称:db

    显示集合:show collections     ps:这里的集合数据于mysql里的表

    查看集合的数据:db.集合名.find({})  ps:db.student.find({})   其中{}可以不写

    删除数据库:db.dropDatabase()

    sql语句中的删除数据库:drop database test3;

    退出数据库:Ctrl+c或者exit

    集合(表)操作

    在某个数据库里面创建集合:db.createCollection(name, options)

          name是要创建的集合的名称

       options是一个文档,用于指定集合的配置 ,选项​​参数是可选的,所以只需要到指定的集合名称.

      ps: 创建集合,集合的名字叫students:db.createCollection("students")

    查看当前数据库的所有集合:show collections或者show tables

    删除集合: db.students.drop()

    数据基本操作

    插入数据:db.集合名称.insert(document)    插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

      insert,如果存在会报错

      ps: db.students.insert({"name":"gj",gender:1})

    查看数据:db.students.find({})或者db.students.find()

    也可以自己指定id:

      ps:db.students.insert({id:"20180418","name":"gj",gender:1})

    简单查询

    查询所有的数据:db.students.find()或者db.students.find({})

    更新数据:

    db.集合名称.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>})

    参数query:查询条件,类似sql语句update中where部分

    参数update:更新操作符,类似sql语句update中set部分

    参数upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

    参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新

      ps:默认值更新一条数据,并且结构被修改  db.student.update({},{name:'mnc'})

       默认值更新一条数据,只修改字段,不破坏数据  db.stu.update({},{$set:{name:'mnc'}})

        全文档找更新找到的第一条,把{name:'hr'}对应的这条修改成{name:'mnc'},其他字段全部丢掉

          db.students.update({name:"hr"},{name:"mnc",gender:1})

        指定属性更新,通过操作符$set数据结构不会被破坏,也是只修改一条  

          db.students.update({"name":"mnc"},{$set:{gender:0}})

    修改多条匹配到的数据:多条操作一定要配合$set,否则会报错注意true和flase是小写

    ps:把所有的性别都修改成女生  db.students.update({},{$set:{gender:0}},{multi:true})

     把所有的gj修改成“郭靖”,并且不破坏结构  db.students.update({"name":"gj"},{$set:{"name":"郭靖"}},{multi:true})

                "$set"也可加引号:db.students.update({"name":"gj"},{"$set":{"name":"郭靖"}},{"multi":true})

    方法findOne():查询,只返回第一个文档:db.集合名称.findOne({条件文档})

    方法pretty():将结果格式化: db.集合名称.find({条件文档}).pretty()

    保存:

    db.集合名称.save(document)   如果文档的_id已经存在则修改,并且结构变化,如果文档的_id不存在则添加注意,如果_id写成是id,则会把id当成key

     ps:db.students.save({"_id":"20180418","name":"张三","gender":1})

    删除:db.集合名称.remove(<query>,{justOne: <boolean>})

      参数query:可选,删除的文档的条件

      参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

      ps:只删除匹配到的第一条   db.students.remove({"name" : "gj"},{"justOne":true})

      全部删除: db.students.remove({})

    关于max的示例

     ps:创建一个名为sub的定长集合,长度为5个字节,可容纳的文档数为3

      db.createCollection("sub",{"capped":true,size:5,max:3}) 这里当插入的文档数超过3时会自动替换前一个文档

    比较运算符

      等于,默认是等于判断,没有运算符

      小于$lt  计算机术语里面是 less than,意思是小于,缩写是lt

      小于或等于$lte

      大于$gt   对应 greater than,意思是大于,缩写是gt ;

      大于或等于$gte

      不等于$ne  对应 Not equal to,意思是不等于,缩写ne;

      ps:查询课时大于或等于2的学科  db.sub.find({"count":{"$gte":2}})

       查找标题不是mongodb的学科   db.sub.find({'title':{'$ne':"mongodb"}})

     逻辑运算符

      查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接

      逻辑与:默认是逻辑与的关系,多个条件直接用逗号连接

        ps:查询课时大于或等于10,并且标题为web的学科  db.sub.find({"count":{"$gte":10},"title":"web"})

      逻辑或:使用$or 

        ps:查询课时大于10,或标题为web的学科 db.sub.find({"$or":[{"count":{"$gt":10}},{"title":"web"}]})

    范围运算符--"$in":使用"$in","$nin" 判断是否在某个范围内

      ps:查询课时为8、14的学科  db.sub.find({"count":{"$in":[8,14]}})

       查询课时不为8、14的学科 db.sub.find({"count":{"$nin":[8,14]}})


    Limit与Skip:

      db.集合名称.find().limit(NUMBER), 参数NUMBER表示要获取文档的条数, 如果没有指定参数或者0则显示集合中的所有文档

      方法limit():用于读取指定数量的文档 ps:  查询2条信息 db.sub.find({}).limit(2)

      方法skip():用于跳过指定数量的文档

      db.集合名称.find().skip(NUMBER)   参数NUMBER表示跳过的记录条数,默认值为0

      ps:查询从第3条开始的学生信息 db.stu.find().skip(2)

      

    limit()skip()一起使用:

      ps: 从第二条开始,并且只要三条  db.sub.find().skip(2).limit(3)

    MongoDBpython交互:

    创建客户端:

    #无安全认证:
    client = MongoClient('localhost', 27017)
    client = MongoClient('mongodb://localhost:27017/数据库名称')
    client = MongoClient('mongodb://localhost:27017/test1')
    
    #有安全认证:
    client = MongoClient('mongodb://用户名:密码@localhost:27017/数据库名称')
    client = MongoClient('mongodb://t1:123@localhost:27017/test1')

    代码实现:

    from pymongo import MongoClient
    
    client = MongoClient("mongodb://localhost:27017/test1")
    #得到名字叫test1的数据库
    
    test1 = client['test1'] #也可以写成 test1 = client.test1
    #得到名字叫t1的集合
    
    t1 = test1['t1'] #也可写成 t1 = test1.t1
    #要插入的数据
    s1 = {"name":"郭靖","age":18}
    s = t1.insert_one(s1)

    更新数据:

    s = t1.update_one({"name":"郭靖"},{"$set":{"name":"黄蓉"}})

    删除数据:

    s1 = t1.delete_one({'name':'黄药师'})

    查找数据:

    s1 = t1.find_one({'name':'黄蓉'})
    #查找所有数据 t1.find()

     

      

  • 相关阅读:
    leetcode刷题笔记四十四 通配符匹配
    leetcode刷题笔记四十三 字符串相乘
    leetcode刷题笔记四十二 接雨水
    Scala 学习 -- 其他集合类学习
    Scala 学习 -- 列表
    leetcode刷题笔记四十一 缺失的第一个正数
    HTML5每日一练之OL列表的改良
    HTML5边玩边学(1)画布实现方法
    html5 +css3 第一章学习和笔记
    HTML5每日一练之figure新标签的应用
  • 原文地址:https://www.cnblogs.com/cz-basic/p/9079398.html
Copyright © 2011-2022 走看看