zoukankan      html  css  js  c++  java
  • mongodb安装及使用

    安装命令:

    sudo apt-get install mongodb 
    

    开始认证,创建用户:

    编辑配置文件: sudo vim /etc/mongodb.conf
        11行中的 bind_ip值 修改成为 0.0.0.0
        打开第22行中的注释   auth=true
    
        保存退出  :wq
        
        重启mongodb
            sudo service mongodb restart
            
            
        命令行中写入mongo,然后回车,进入到数据库中
        use admin
        db.createUser({user:"admin",pwd:"123456",roles:["root"]})
        使用db.auth("admin", "password")认证
        
        查看认证
        命令:db.getCollectionNames()
        返回结果:[ "system.users", "system.version" ]
        
        查看用户: show users
        返回结果
        {
        	"_id" : "admin.admin",
        	"user" : "admin",
        	"db" : "admin",
        	"roles" : [
        		{
        			"role" : "root",
        			"db" : "admin"
        		}
        	]
        }
    

     安装mongodb遇到的问题:

    遇到问题:mongodb Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed 
    错误提示:exception in initAndListen: 29 Data directory /data/db not found., terminating
    解决办法:
        sudo mongod  
        sudo mkdir /data
        cd /data
        sudo mkdir db
        ll
        sudo chmod 777 db
    每次使用mongo:先输入sudo mongod , 在输入mongo
    

    MongoDB的基本操作:

    我们通常把MongoDB中的表叫做集合
    
    - 进入命令行  mongo
    - 进入数据库  use admin
    - 认证用户   db.auth("admin","123456")
    - 创建数据库  use python_ui   这个命令的意思是没有就创建,有就不创建了
    - 插入数据 db.my_collection.insert({"greedyai":"testdata"})  插入的同时如果集合不存在,则创建
    - 查看所有数据库   show dbs
    - 查看当前使用的数据库  db
    - 删除数据库  db.dropDatabase()  这个删除的是当前应用的数据库
    - 删除集合  db.my_collection.drop()
    - 查看当前数据库下的所有集合   show tables 或 show collections
    - 单独创建集合 db.createCollection("my_test_collection")
    - 单条插入文档 : db.my_test_collection.insert({'CPU类型': 'Intel 第8代 酷睿', 'CPU型号': 'i7-8550U', 'CPU速度': '1.8GHz睿频至4.0GHz', '三级缓存': '8M', '核心': '四核'})
    - 多条插入文档 :  db.my_test_collection.insertMany([{'内存容量': '16GB', '插槽数量': '2 x SO-DIMM'},{'硬盘容量': '1TB', '转速': '5400转/分钟', '固态硬盘': '256GB SSD'},{'类型': '独立显卡', '显示芯片': 'AMD Radeon RX550 2GB GDDR5 独立显存', '显存容量': '独立2GB'},{'屏幕尺寸': '14英寸', '屏幕规格': '14.0英寸', '显示比例': '宽屏16:9', '物理分辨率': '1920×1080', '屏幕类型': 'LED背光'},{'光驱类型': '无光驱'}])
    
    
    [查询语句]
    插入一点数据,作为练习 
            db.my_test_collection.insert([{"computer_price":5000},{"computer_price":6000},{"computer_price":7000}])
    
    简单查询:
        db.my_test_collection.find().pretty()
        pretty()函数加不加都可以,这是一个显示样式的函数
        
    条件查询:
        db.my_test_collection.find(这里写条件,相当于sql语句中的where).pretty()
    
    常见条件筛选:
        等于: db.my_test_collection.find({"颜色":"冰原银"}).pretty()
        小于 :	db.my_test_collection.find({"computer_price":{$lt:6000}}).pretty()  
        小于或等于 :	db.my_test_collection.find({"computer_price":{$lte:6000}}).pretty()
        大于 :	db.my_test_collection.find({"computer_price":{$gt:6000}}).pretty()
        大于或等于 : db.my_test_collection.find({"computer_price":{$gte:6000}}).pretty()
        不等于 :db.my_test_collection.find({"computer_price":{$ne:6000}}).pretty()
        
        先插入一个数据: db.my_test_collection.insert({'屏幕尺寸': '14英寸', '屏幕规格': '14.0英寸', '显示比例': '宽屏16:9', '物理分辨率': '1920×1080', '屏幕类型': 'LED不背光'})
        和  : db.my_test_collection.find({"屏幕类型":"LED背光","屏幕尺寸":"14英寸"}).pretty()
        或 : db.my_test_collection.find({$or:[{"屏幕类型":"LED背光"},{"屏幕类型":"LED不背光"}]}).pretty()   
        和与或联合使用:
            db.my_test_collection.find({"屏幕尺寸":"14英寸",$or:[{"屏幕类型":"LED背光"},{"屏幕类型":"LED不背光"}]}).pretty()
    
    
    
        模糊查询:
            开头: db.my_test_collection.find({"显示比例":/^宽屏/}).pretty()
            结尾: db.my_test_collection.find({"显示比例":/9$/}).pretty()
            包含: db.my_test_collection.find({"显示比例":/6/}).pretty()
    
        正则查询:
            db.my_test_collection.find({"屏幕规格":{"$regex":"英"}})
    
        按字段属性查询 $type
            插入测试数据:    db.my_test_collection.insert({'屏幕尺寸': 15, '屏幕规格': '14.0英寸', '显示比例': '宽屏16:9', '物理分辨率': '1920×1080', '屏幕类型': 'LED不背光'})
            字段类型查询 
                查询数字类型: db.my_test_collection.find({"屏幕尺寸":{$type:1}})
                查询字符串类型: db.my_test_collection.find({"屏幕尺寸":{$type:"string"}})  或 db.my_test_collection.find({"屏幕尺寸":{$type:2}})
                
        限定与跳过
            limit: 限定返回多少条
            skip: 在返回的结果中,跳过多少条
            如果两个函数同时共存,则先运行skip ,再运行limit
            db.my_test_collection.find().limit(3)
            db.my_test_collection.find().limit(3).skip(1)
                
        排序:
            sort(): 支持按照某一个字段来进行排序  sort({"key":1})  这个value值,1标识升序,-1标识降序
            具体排序顺序是根据ascii码表来的 http://ascii.911cha.com/
            db.my_test_collection.find().sort({"屏幕尺寸":-1})
        
                
    [索引]
        创建索引: 
            升序索引  db.my_test_collection.createIndex({"屏幕尺寸":1})
            降序索引  db.my_test_collection.createIndex({"类型":-1})
            复合索引或联合索引  db.my_test_collection.createIndex({"屏幕尺寸":1,"类型":-1})
            数据量过大时,创建索引时间会比较长,所以可以后台创建索引
                    db.my_test_collection.createIndex({"硬盘容量":-1},{background:true})
            查看索引
                db.my_test_collection.getIndexKeys()
            查看索引大小
                db.my_test_collection.totalSize()
            删除所有索引
                db.my_test_collection.dropIndexes()
            删除指定索引
                db.my_test_collection.dropIndex("索引名称")
                
                
    [删除文档]
        其实就是删除表中数据
        db.my_test_collection.remove({"光驱类型":"无光驱"})  括号里写的就是查询条件
            然后执行 db.repairDatabase() 释放磁盘空间
        
        另一种删除
            db.my_test_collection.deleteMany({"computer_price":7000})
            db.my_test_collection.deleteOne({"computer_price":7000})
        
        
    [更新文档]
        用的时候一定要慎重,因为文档的更新,一不小心有可能把文档覆盖了
        
        第一种基本格式:   db.my_test_collection.update(
                            {查询的条件},
                            {要更新的字段,这里一定要写全部},
                            布尔值-代表如果未找到是否插入-默认为false不插入,
                            布尔值-代表是否更新全部查找到的记录-默认为false-意思就是说只更新查到的第一条)
        
        db.my_test_collection.update({_id:ObjectId("5c8a83c8f8d27beb40e7142b")},{"系列11" : "ThinkPad E480"})
        
        第二种基本格式:
        
                          db.my_test_collection.update(
                            {查询的条件},
                            {$set:{这里写要更新的字段,这种方式则只会操作目标字段}},
                            布尔值-代表如果未找到是否插入-默认为false不插入,
                            布尔值-代表是否更新全部查找到的记录-默认为false-意思就是说只更新查到的第一条)
        
        
        db.my_test_collection.update({_id:ObjectId("5c8a83c8f8d27beb40e7142b")},{$set:{"系列11" : "ThinkPad E480"}})
    

      

  • 相关阅读:
    程序员父亲的遗产——编程十诫 转载
    如何跟程序员谈一场没有Bug的恋爱
    java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)
    CentOS7.0下载各版本说明 新增Everything版
    Virtualbox虚拟机安装CentOS 6.5图文详细教程
    s:iterator数据累加示例代码
    关于程序员的59条搞笑但却真实无比的编程语录
    jQuery EasyUI API 中文文档
    Java发送带html标签内容的邮件
    javascript比较两个时间大小
  • 原文地址:https://www.cnblogs.com/an5456/p/10561485.html
Copyright © 2011-2022 走看看