二、数据库:mongodb数据库

一、MongoDb

1、Mongodb是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统

2、旨在为 web 应用提供可拓展的高性能数据存储解决方案

3、mongodb将数据存储为一个文档,数据结构由键值对组成,mongodb 文档类似于 json 对象,字段值可以包含其他文档、数组及文档数组

 

二、MongoDb数据库相关操作

1、连接数据库:     mongo    IP地址:端口号(默认端口号为27017)/ 数据库名(默认使用test库)

2、查询当前正在使用的数据库:  db.getName( )   或    db

3、查看全部数据库:  show  dbs   或   show  databases

4、选择使用数据库:  use  数据库 ( 若数据库不存在,则新建数据库,如果并没有对该数据库进行任何操作,则不会创建成功 )

5、删除数据库:   ① 选择想要删除的数据库:   use    数据库              ② 删除该数据库:   db.dropDatabase( )

   

6、查看数据库状态:   db.stats( )

7、使用数据库使用手册:    db.help( )

 

 

三、MongoDb集合相关操作

1、查看当前数据库中的所有集合( 先选择数据库,指令结尾可以加上分号):   show   tables   或   show   collections 

2、集合的命名

     ①不能是空字符串 ("  ")

     ②不能包含空字符 ( \0 )

     ③不能使用 system. 的前缀( 系统保留 )

     ④不建议使用保留字( "$" )

     ⑤用 . 分隔不同命名空间的子集合( 如:bolg.users,blog.posts )

3、创建集合:   db.createCollection(  "集合名"  )

4、删除集合:   db.集合名.drop( )     删除成功后,返回 true ; 删除一个不存在的集合,返回 false

5、创建集合并插入数据

插入记录成功之后,mongodb 会默认为每一个文档都添加一个  _id 字段,并且同一个集合中的 _id 是唯一的

 

 

四、写数据

1、普通数据的添加(json、bson、类json)   

   ①一次写入一条数据:     db.集合.insert( {"键":"值"} )     或者    db.集合.save( {"键":"值"} )

   ②一次写入多条数据:     db.集合.insert (  [  {"键":"值"} , {"键":"值"} , {"键":"值"}  ]  ) 

 

2、多维数据对象的添加 :    db.集合.insert(  {"键":"值","键":{"键":"值" }   }  )        

  

3、数组信息的添加:    db.集合.insert(  {"键":"值","键":{"键":"值" } ,"键":[ '值1','值2','值3' ]   }  )     

4、数据的另一种写入形式:

 

 

五、查数据

1、笼统查询:

    ①查询集合的全部数据信息:   db.集合.find( )

    ②查询集合的第一条数据信息:   db.集合.findOne( )

  ③使用 pretty方法,以格式化的形式输出数据信息,使查询到的数据看起来更加直观、清晰

   db.集合.find( ).pretty( )

 

2、条件限制查询:

    ①查询集合中满足条件的全部数据信息:   db.集合.find(  { 条件 }  )

     查询goods集合中,所有满足年龄为22的人的信息

   ②查询集合中满足条件的第一条数据信息:   db.集合.findOne(  { 条件 }  )

 

3、条件范围查询:    ⑴ $gt  大于        ⑵ $gte   大于等于        ⑶ $lt   小于         ⑷ $lte   小于等于

    db.集合.find(  { '键':{ ' $gt ' :' 值 ' }  }  )      查询集合中某个键的值大于某一个值的全部信息

 

4、多条件查询:   db.集合.find(  {  条件1 ,  条件2 , 条件3 }  )

    查询年龄大于20,且姓名为 wang 的数据信息

 

5、多维字段查询:当集合中含有多维数据信息的时候(即字典嵌套字典),可以使用多维字段查询

   ①多维字段的条件查询:   db.集合.find( { "key.name":条件 } )

   ②多维字段的范围查询:   db.集合.find( { "key.name":{ ' 范围 ':' 值 ' }  } )

   ③多维字段的多条件查询: 

 

6、数组条件限制查询:

    ①  db.集合.find(   {  数组的字段名:[ ' 值1',' 值2 '  ]   }   )

     注意注意的是:只要该字段中包含查询的这个值,那么就可以查询出来,当查询这个字段的多个值时,只有当它们的顺序一致且存在时,才会查询出来,否则就会像第三次查询那样,无法查询出来

   ②  db.集合.find(   {  数组的字段名:{ ' $all ':[ ' 值1',' 值2 '  ]  }    }   )

   当配合  $all 使用时,多个值的顺序就不必与存储顺序一致了,只需存在就可以查询出来

 

7、限制查询字段:只查询指定的字段信息:      db.集合.find.( { 条件 },{ 字段:1/ 0,字段:1/ 0  } )

    find 方法的第一个参数 ( 即条件 ) 必须有,若没有条件的话,就为空字典,    1表示查询此字段,    0表示排除此字段

    当想要显示多个字段时:这些字段要么全部输出 ( 全为1 ),要么全部不输出( 全为0 ), _id 字段除外,它可以任意设置 0 或 1

  当不限制是否显示 _id 字段时,该字段会默认显示出来

 

8、$or 、 $in 、 $nin 、 $all 的使用

   ① $or,多条件查询,满足其中任意一个条件即可      db.集合.find( {  ' $or ':[  { 条件1 },{ 条件2 }  ]    } )

  如图,条件为:性别为男,或者年龄不小于22,只要满足至少一个条件,就会查询到

   ② $in / $nin  : 在数组中 / 不再数组中     

   db.集合.find( {  ' 字段 ':  { ' $in ':[ ' 值1 ',' 值2 ',' 值3 ' ]  }   } )       若该字段中存在这个值,就会查询出来

   db.集合.find( {  ' 字段 ':  { ' $nin ':[ ' 值1 ',' 值2 ',' 值3 ' ]  }   } )       若该字段中不存在这个值,就会查询出来

   ③ $all  ,完全匹配,查询的字段的数组信息与其要求的相同( 没有顺序要求,且数组中可以存在要求匹配的以外的其他数据 )

   如图,要求 interest 字段的数组完全匹配 eat 和 sleep ( 没有顺序要求 ),只要该数组中存在这两个数据即可,对其余的数据,如 run,则没有要求

 

9、自定义条件查询 $where:通过函数自定义条件[JS函数],在指定的函数中,返回boolean类型的值,this表示每个要查询的文档

   db.集合.find( { $where:函数名( ) { return  this.字段 条件 }   } )

 

10、限制查询数据条数:   

  如下:goods集合共有10条数据

   ① db.集合.find( ).limit(3)    限制查询数据的条数为 3(即只可以查询到满足要求的前三跳数据)

   ②db.集合.find( ).skip( 2 )   跳过查询到的前2条数据(跳过查询到的前两条)

   ③ limit( ) 和 skip( )结合使用:   db.集合.find( ).limit(3).skip( 2)    跳过查询到的前两条数据,且只显示之后的三条数据

   由此,实现分页显示: 规定,每页显示两条数据,即 limit(2),那么 skip 的参数为 2( n-1 )

 

11、数据查询——排序、统计、去重

   ① 排序查询:   db.集合.find( ).sort ( { ' 字段 ':1 / -1 } )    按该字段进行升序 / 降序查询 ,  1表示升序,-1表示降序

   ② 统计查询:  db.集合.find( ).count( )    统计符合查询要求的数据的数量

   ③去重查询:  db.集合.distinct( "去重字段",{ 条件 }  )

 

 

六、更新数据

1、修改数据

   ①  db.集合.update( { 条件 },{ ' $set ' :{ " 字段 ":" 值 ", " 字段 ":" 值 " ......} }  )

     使用 $set 修改数据时,只会修改数据指定的字段,其余字段不会被改变,也不会被删除,且每次只会修改一个数据

   ②  db.集合.update(  { 条件 },{ " 字段 ":" 值 ", " 字段 ":" 值 " ......}   )

     使用这种方法修改数据时,只修改指定字段信息,其余字段将会被删除

 

2、删除数据

    db.集合.remove(  { 条件 },true / false )      ,第二个参数表示:是否删除一条数据,默认为 false,即默认删除多条数据

 

3、删除字段:   db.集合.update( { 条件 },{ " $unset ":{ 字段:1,字段:1 }  }  )      (字段:1 或 字段:0  都可以删除该字段)

db.集合.remove( { } )   清空所以数据

 

4、修改数据的其他方法:

    db.集合.update(  { 条件 },{ " 修改器 ":{ 字段:值 }  }  ,false / true,false / true )

    第一个参数: 条件,即将满足条件的字段值进行修改               

    第二个参数:修改器及修改字段,   修改器 $set:修改字段信息,     修改器 $inc:增加值

    第三个参数:默认 false,即当修改数据时,若没有该字段,则不进行任何操作, true 表示增加这个不存在的字段与值

    第四个参数:默认 false,即当有多条数据满足要求时,只修改一条,  true 表示全部修改

 

    如图:修改 age 为 20 的数据,将 age 修改为 30,并且添加新字段 sex,且满足条件的全部修改

   修改 age 为 30 的数据,将 age 的值加5,且只修改一条数据

 

 

七、python 与 mongodb 交互

1、pymongo 是操作 mongodb 的 python 模块

     安装:python3  -m  pip  install  pymongo           linux:sudo   python3  -m  pip  install  pymongo 

2、实例

   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值