[笔记]mongodb一

一、MongoDB介绍

  MongoDB是一个由c++编写的基于分布式文件存储的数据库。MongoDB介于关系型数据库和非关系型数据库之间,是非关系型数据库中功能最丰富,最接近关系型数据库。具有高性能,易使用,易部署的特点,同时MongoDB还能跨平台。

二、MySql和MongoDB对比

MySql MongoDB 说明
database database 数据库
table collection 集合
row document 文档
column field 字段
index index 索引
primary key _id 主键
join 内嵌文档 最像关系型的原因

  document:以json键值对的形式存储。

  collection:document的集合。

  _id:每一个document都有一个_id。

  MongoDB组织结构:数据库>>集合

三、MongoDB库的操作

  1)、登录

    1、mongo:默认连接到test库,test可以不存在。

      查看有哪些数据库:show dbs

      退出数据库:exit,或者quit()

    2、mongo ip:port/dbname:指定IP,端口,数据库

  2)、切换或创建库

    use dbname:默认情况下如果不做任何操作,不会保留新创建的数据库

  3)、删除库

    use dbname:切换到目标数据库

    db.dropDatabase:删除目标数据库

  4)、查看当前所在库名

    db或者db.getName()

  5)、查看当前库的集合

    show tables或者show collections

四、新增文档

  db.collectionName.insert({key1:intVal1,key:'charVal',key3:['intVal','charVal',……] } )

    collectionName是目标集合名

  db.collectionName.save()功能和insert类似,区别在于如果在save中指定已经存在的_id,则会相当于update,会修改原数据

  批量新增数据:db.sourceCollection.find().forEach(function(x){db.newCollection.insert(x)})

    反复执行这条指令,只会插入一次

五、查看文档

  db.collectionName.find(COND_JSON,SHOW_JSON)

  1、db.collectionName.find():查看集合下所有文档

  2、db.collectionName.find({key1:intVal,key2:'charVal',……}):查看集合下所有满足key1=inVal,key2='charVal',……的文档

  3、db.collectionName.find({key1:{$gt:intVal},key2:'charVal',……}):查看集合下所有满足key1大于inVal,key2='charVal',……的文档

    $gt=greater than 大于

    $lt=less than 小于

    $lte=less than equal 小于等于

    $gte=greater than equal 大于等于

    $ne=not equal 不等于

  4、db.collectionName.find({},{key1:1,key2:1,……}):查看集合所有文档,并且只显示key1,key2,……等部分列。db.collectionName.find({},{key1:1,key2:1,……,_id:0})显示部分列且不显示_id列

  5、db.collectionName.find({ $or : [ {key1:intVal1},{key1:intVal2} ] }):查看集合下key1=intVal1或者key1=intVal2的文档。db.collectionName.find( {key1: {$in:[intVal1,intVal2]} } )同前。db.collectionName.find( {key1: {$nin:[intVal1,intVal2]} } )查看key1!=intVal1或者key!=intVal2的文档

  6、db.collectionName.find({key:null }):显示key为空的文档,没有key字段也符合条件

  7、db.collectionName.find().sort( { key:1}):显示文档按key的升序排列。db.collectionName.find().sort( { key:-1})按降序排列

  8、db.collectionName.find().skip(intVal1).limit(intVal2):跳过intVal1条数据,显示intVal2条数据

六、修改文档

  db.collectionName.update( <query>, <update>, { upsert: boolVal, multi: boolVal,……}):<query>要修改的文档,<update>要修改成的数据。upsert,如果条件不存在是否新增数据,默认是false。multi,是否修改多条,默认是false,只更新找到的第一条。

  db.collectionName.update( {key1: val}, {$set : {key2: val} } ):指定set,只会修改key2的值,不会覆盖。如果不指定set,会将{key2:val}直接覆盖原文档。

七、删除文档

  db.collectionName.remove( <query>, {justOne: boolVal, writeConcern: <document> } ):<query>要删除的文档。justOne,是否只删除一个,默认是false。writeConsern默认使用WriteConsern.NORMAL 仅仅抛出网络异常

  db.collectionName.drop()删除集合

八、索引

  索引的作用:提高查询效率

  db.collectionName.ensureIndex( {key:1} ):创建key的索引

  db.collectionName.dropIndex( {key:1} ):删除key的索引

九、聚合函数

  db.collectionName.aggregate( {$group: {_id: "$key", ……} }):指定集合collectionName按照key分组。

  db.collectionName.find().count():显示集合的记录总数

 

posted @ 2019-09-25 21:35  qetuo[  阅读(181)  评论(0编辑  收藏  举报