MongoDB的操作

作者: 马大哈tt | 来源:发表于2018-01-24 20:43 被阅读0次

    mongoDB的概念

    1. MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
    2. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
    3. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

    mongoDB的安装与启动

    1. 安装mongoDB
    brew install mongodb
    
    1. 新建文件夹 (名字自取) 这里以database
    2. 启动mongodb服务器
     mongod --dbpath=文件路径
    
    1. 进入服务器环境
    mongo
    
    1. 查看数据库
    show dbs
    

    初始数据库的状态


    19DB3BBEC6E07E186364E463F476330C.png

    mongoDB的操作

    操作mongo基础

    下面是数据库与mongoDB的对比图,构成有相似的,也有不同的


    6256A0FE1A648795B3EF021425581CB0.png
    1. 创建数据库
      先use 要创建的数据库名,如果数据库名已存在,则切换到此数据库中;如不存在,则创建数据库
    // 创建一个users数据库
    user users
    
    1. 创建一个数据库集合person,并添加数据
    db.person.insert({name:"张三",age:20})
    
    1. 查看当前使用的数据库
    db
    
    1. 删除数据库
    db.dropDatabase() 
    
    1. 断开连接
    exit
    

    操作集合

    1. 查看当前数据库下有哪些集合
    show collections
    
    1. 创建集合
    db.createCollection(collection_Name)
    
    1. 删除集合
    db.collection_Name.drop()
    

    文档操作

    这里以person集合为例
    1.insert 添加数据:
    db.COLLECTIONNAME.insert({name:"张三",age:20})

    db.person.insert({name:'马云',age:37})
    
    1. save 添加与更新:
      如果通过id能找到就是更新,如果找不到就是添加;
    • 添加
    db.person.save({name:"李四"})
    
    • 更新
    db.person.save({'_id':ObjectId("5a67f5221df8d5687e847094"),name:'王五',age:21}
    
    1. update 更新:(默认更新符合条件的第一条)
      db.COLLECTIONNAME.update({条件},{更新的内容},{配置项(如果要更新能够匹配的多个选项 multi:true)})
      下列更新名字叫马云的年龄为42
    db.person.update({name:"马云"},{$set:{age:42}})
    

    如果表中有多个马云,若想更新所有名字叫马云的年龄,就需要使用到第三个参数multi

    db.person.update({name:"马云"},{$set:{age:18}},{multi:true})
    
    1. remove 删除:(默认删除符合条件的所有数据)
      db.COLLECTIONNAME.remove({name:'张三'},{配置项(可选:justOne)});
      删除名字叫马云的一条数据,需配置第三个参数justOne
    db.person.remove({name:'马云'},{justOne:true})
    
    1. find数据的查询
    • 所有数据的查询
      db.COLLECTIONNAME.find()
    db.person.find()
    

    集合person中的字段


    860A4BC9ACFD105C617F75ED5E26A0DA.png
    • find({条件},{字段})
      条件:大于gt 小于lt 大于等于gte 小于等于 lte 不等于 ne;等于就直接使用冒号
    1. 第一个参数:
      查询大于28的数据
    db.person.find({age:{$gt:28}})
    

    查询年龄等于30的数据

    db.person.find({age:30})
    
    1. 第二个参数:字段 如:{name:1,age:1}
      查询年龄大于28的所有名字
    db.person.find({age:{$gt:28}},{name:1})
    

    查询结果中除了id便只有name一个字段,第二个参数限定需要查询的字段


    CFC06F0A971EB48185C4778065599FEE.png
    • like 关键字
      在mongoDB的操作中比数据操作更加灵活,他可以用正则表达式查询各种条件的数据
      查询以"马"开头的数据 db.COLLECTIONNAME.find({name:/^马/})
    db.person.find({name:/^马/})
    
    • 并且关系:直接写在对象里,逗号隔开
      查询数据名字是"马云"并且年龄是48;
    db.person.find({name:'马云',age:40})
    
    • $or 或者关系
      查询年龄等于48或者28
    db.person.find({$or:[{age:30},{age:40}]})
    
    • 分页:关键字skip和limit
      跳过两条从第三条开始查询两条数据
    db.person.find().skip(2).limit(2)
    
    • 排序: 关键字sort
      参数:1代表正序;-1代表倒序
      以年龄正序排序
    db.person.find().sort({age:1})
    
    • 查询数量: 关键字count
    db.person.find().count();
    

    上面这些的查询的命令单个看起来还挺容易的,但混合使用还是很容易出错的,这就需要大家细心的去写了。
    最后写个简单的综合查询:
    查询所有姓李或者是姓王的;按照年龄倒序排列;只查询结果的2条数据

    db.person.find({$or:[{name:/^李/},{name:/^王/}]}).sort({age:-1}).skip(0).limit(2)
    

    结束语

    MongoDB的扩展性好,并且支持多种汇编语言,由于使用JSON形式的存储,使之更加容易查询文档中的对象或数组。好用的不要不要的。。。

    相关文章

      网友评论

        本文标题:MongoDB的操作

        本文链接:https://www.haomeiwen.com/subject/moxpaxtx.html