美文网首页我爱编程
MongoDB学习笔记

MongoDB学习笔记

作者: cccshuang | 来源:发表于2018-01-21 12:45 被阅读0次

    Windows上的安装方法:

    1. 下载,安装,可以从customer自定义安装路径后,例如我设置的安装路径为"F:\MongoDB",一直Next直到安装结束。
    2. 配置
      • 将安装路径下的bin目录添加到环境变量PATH中,例如我的是"F:\MongoDB\bin";
      • 配置MongoDB的存储路径,例如我配置的是"F:\MongoDB\data\db",就是在"F:\MongoDB"这个文件夹下新建"data\db"这种目录结构;
      • 将MongoDB注册为服务,以方便日后的使用:
        • 打开cmd命令行,输入(将logpath 和dbpath 改成自己的):
          mongod --logpath "F:\MongoDB\logs.log" --dbpath "F:\MongoDB\data\db" --install
        • 注册完成,便可通过输入:
          net start mongodb
          便可启动服务。
    • 在命令行输入mongo之后便可以打开shell对MongoDB进行操作啦~

    基本概念

    SQL概念 MongoDB概念 说明
    database database 数据库
    table collection 数据库表/集合
    row document 数据行/文档
    column field 数据字段列/域

    文档:文档是有序的,大小写敏感的。键不能包含"\0",这个字符用于标记键的结尾;"."、"$"、"_"保留,建议不要使用在键中。文档的数据结构和JSON基本一样,所有存在集合中的数据都是BSON格式。

    基本操作

    • 创建/删除数据库
      show dbs查看所有数据库
      use DATABASE_NAME创建数据库,若不存在则新建,否则进入此数据库
      db.dropDatabase()删除当前数据库

    • 集合
      show collections查看所有集合
      db.createCollection(name, options) 创建集合。options参数是可选的,如autoIndexId 参数,如果为true,则在_id字段上自动创建索引,默认值为false。
      例子:db.createCollection("mytest", { autoIndexId : true})
      db.COLLECTION_NAME.drop() 删除集合

    • 插入文档
      insert()或save()方法
      db.COLLECTION_NAME.insert(document)
      例如:

       db.mytest.insert({
        name: 'Bob',
        score: 100
      })
      
    • 查询文档
      db.COLLECTION_NAME.find() 相当于SQL中的select * from tabe
      db.COLLECTION_NAME.find().pretty()以易读方式展现
      条件语句和操作符:
      | 操作 | 格式 | 示例 | 说明 |
      |------------- |---------------- |--------------- |-------------- |
      |等于 | {<key>:<value>} | db.mytest.find({"score":100}) | 从mytest集合中找到score等于100的文档 |
      |小于 | {<key>:{$lt:<value>}} | db.mytest.find({"score":{$lt:100}}) | 从mytest集合中找到score小于100的文档 |
      |小于或等于 | {<key>:{$lte:<value>}} | db.mytest.find({"score":{$lte:100}}) | 从mytest集合中找到score小于或等于100的文档 |
      |大于 |{<key>:{$gt:<value>}} | db.mytest.find({"score":{$gt:100}}) | 从mytest集合中找到score大于100的文档 |
      |大于或等于 | {<key>:{$gte:<value>}} |db.mytest.find({"score":{$gte:100}}) | 从mytest集合中找到score大于或等于100的文档 |
      |不等于 |{<key>:{$ne:<value>}} |db.mytest.find({"score":{$ne:100}}) | 从mytest集合中找到score不等于100的文档 |
      条件组合:
      AND:以逗号隔开
      db.mytest.find({"score":{$gte:100}, "name":"Bob"})
      OR:使用关键字"$or"
      db.mytest.find({$or:[{"score":{$gte:100}},{"name": "Tom"}]}).pretty()

    • 更新文档

      • update()方法
        db.COLLECTION_NAME.update( <query>, update的查询条件 <update>, update的更新对象等,类似sql update查询内set后面的 { upsert: <boolean>, 可选,不存在update的记录,是否新插入,默认是false,不插入 multi: <boolean>, 可选,默认是false,只更新找到的第一条记录 writeConcern: <document> 可选,抛出异常的级别 } )
        例子:将名字为Bob的记录更改为Jack,更新多条
        db.mytest.update({'name':'Bob'},{$set:{'name':'Jack'}},{multi:true})
    • save()方法:通过传入的文档来替换已有文档
      db.COLLECTION_NAME.save( <document>, 文档数据 { writeConcern: <document> 可选,抛出异常的级别 } )
      例子:替换 _id 为 56064f89ade2f21f36b04236 的文档数据
      db.mytest.save({ "_id" : ObjectId("5a5f103d1fa359a981d5ec90"), "name" : "Marry", "score" : 100 })
    • 删除文档
      db.COLLECTION_NAME.remove( <query>, 可选,删除的文档的条件。若无,则删除全部文档 { justOne: <boolean>, 可选,设为 true 或 1,则只删除一个文档 writeConcern: <document> 可选,抛出异常的级别 } )
      例子:删除名字为Tom的文档
      db.mytest.remove({"name":"Marry"})

    练习:

    use mydb  #创建数据库
    show dbs  #查询所有数据库
    db.createCollection("mytest", { autoIndexId : true}) #创建集合mytest
    show collections  #查询所有集合
    #插入数据
    db.mytest.insert({
          name: 'Bob',
          score: 100
          })
    db.mytest.insert({
          name: 'Tom',
          score: 96
          })
    db.mytest.find({"score":100}) #查询mytest中score为100的记录
    db.mytest.find({"score":{$lt:100}})
    db.mytest.find({$or:[{"score":{$gte:100}},{"name": "Tom"}]}).pretty()
    db.mytest.update({'name':'Bob'},{$set:{'name':'Jack'}},{multi:true})
    db.mytest.find() #查询mytest中所有记录
    #将_id为5a5f103d1fa359a981d5ec90的数据替换
    db.mytest.save({
        "_id" : ObjectId("5a5f103d1fa359a981d5ec90"),
        "name" : "Marry",
        "score" :  100
    })
    db.mytest.remove({"name":"Marry"})  #删除mytest中名字为Marry的记录
    

    相关文章

      网友评论

        本文标题:MongoDB学习笔记

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