亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

MongoDB基礎知識

2024-06-28 16:01:20
字體:
來源:轉載
供稿:網友

1.mongoDB數據庫(NoSQL數據庫)    1.1 安裝(windows版本)        a.下載鏈接  www.mongodb.org        b.創建一個目錄用于存放安裝目錄,解壓安裝包        c.創建一個目錄用于存放數據        d.cd到安裝目錄 進入bin 執行 mongod.exe --dbpath 數據目錄全路徑        e.配置環境變量        f.啟動數據庫服務 自己修改mongodb.bat            mongod --dbpath "d:/mongodb_data"        g.參考文檔配置啟動命令選項        h.客戶端連接            mongo 127.0.0.1:27017(如果不改變端口,默認為27017)/admin(使用管理員登陸)    1.2 shell基本操作        1.2.1 對比                和關系型數據庫差異                    對比項     mongodb     MySQL                    表           集合      table                    行           文檔      行記錄                    字段      鍵key        字段field                    值           值value      值value                    主外鍵     無           PK,FK                    靈活性     極高      差                    查詢      find        sql        1.2.2 基本操作                1.創建數據庫                    use 數據庫名(如果此時什么都不干,離開時這個空數據庫會從緩存中刪除)                2.查看所有數據庫                    show dbs                3.給指定的數據庫添加集合并添加記錄                    db.persons.insert({name:"test"})  //此條命令執行完以后會自動為文檔插入id一列                    其中:                        db 表示所使用的數據庫                        persons 表示集合                        insert 表示集合操作                        name 表示key                        test 表示value                4.查看數據庫中的所有文檔                    show collections                5.查詢指定文檔的數據                    a.查詢所有                        db.persons.find()                    b.查詢一條數據                        db.persons.findOne() //查詢一行數據                6.更新文檔數據                    db.persons.update({name:"test"},{$set:{name:"test1"}})  //滿足條件多條記錄時,只更新第一條                    //第一個{} 表示條件                    //第二個{}  表示需修改的字段                7.刪除文檔數據                    db.persons.remove({name:"123"})                    //{} 條件                8.刪除庫中的集合                      db.persons.drop()                9.刪除數據庫                    db.dropDatabase()                10.shell的help                    db.help()  //全局數據庫幫助                    db.person.help() //集合相關幫助                11.API                    http://api.mongodb.org/                12.命名規范                    1.不能是空字符串                    2.特殊符號不能使用                    3.應全部小寫                    4.最多64字節                    5.不能跟現有的數據同名  如admin local                13.可充當js引擎,可以執行js命令                    1.3 BSON擴充的數據類型        1.概述            BSON:是JSON的擴展,它新增了日期和浮點等JSON不支持的數據類型    1.4 MongoVUE————可視化工具        一開始不推薦  后期可查看相關命令    1.5 文檔數據        1.插入            a.插入                db.文檔.insert.({key:value})            b.批量插入                shell不支持批量插入,只能使用for循環                for(var i=0 ; i<10 ; i++){                    db.perosns.insert({name:i})                }            c.save操作                save操作和insert操作的區別在于當遇到相同id情況下時:                    save完成保存操作,而insert則報錯        2.刪除            a.刪除列表中所有數據                db.persons.remove()            b.根據條件刪除數據                db.persons.remove({naem:1})        3.更新            a.強硬式文件替換                db.persons.update({查詢器},{修改器})                //會導致新文檔替換舊文檔 新文檔為修改器里面的內容            b.主鍵沖突會報錯并停止更新操作                當更新文檔和已有文檔ID沖突時則系統報錯            c.insertOrUpdate操作                查詢器查出來的數據則執行更新操作,否則執行替換操作                db.persons.update({查詢器},{修改器},true)            d.批量更新操作(解決只更新一條數據問題)                db.persons.update({查詢器},{修改器},false,true//查詢器多條記錄時均更新            e.更新器                $set————用來指定一個鍵值對,存在則修改,不存在則添加                    {$set:{key:value}}                $inc————用來指定的鍵對應的數字類型的數值進行加減操作                    {$inc:{field:1}}  //field這個列的數值+1 如果減1則是-1                $unset————用來刪除指定鍵                    {$unset:{field:value}}                $push————如果指定的鍵是數組則追加數值;如果指定鍵不存在則創建數組類型的鍵值對                    {$push:{filed:value}}                $pushAll————用法和push差不多                    {$pushAll:{field:array}}  //注意后面跟著是數組                $addToSet————用于添加鍵,如果存在則不操作                    {$addToSet:{field:value}}                $pop————從指定數組中刪除一個值                    {$pop:{filed:value}} //其中value為1時代表最后一個數值,-1為第一個數值                $pull————刪除一個被指定的數值                    {$pull:{"name":"test"}}                $pullAll————一次性刪除多個指定的數值                    {$pullAll:{"name":["test","test1","test2"]}}                $————數組定位器        4.查詢            a.Find                1.指定返回的鍵                    db.persons.find({},{})                    //第一個{}指定條件                    //第二個{}指定需要返回的列                    //其中id列默認情況下會返回  _id:0為不返回 name:1為返回那么列                2.查詢條件                    $lt -> <  $lte -> <=                    $gt -> >  $gte -> >=                    $ne -> !=                    $in                    $nin                    $or                    Null                    $elemMatch ————數組查詢器                    $where     ————盡量避免使用。性能低                    示例:   22<=age<=27 -> {age:{$gte:22,$lte:27}}                            age != 26  -> {age:{$ne:26}}                            age in(12,13) -> {age:{$in:[12,13]}}  --后接數組                            age>80 or age<40 -> {$or:[{age:{$gt:80}},{age:{$lt:40}}]}                            age is null      -> {age:{$in:[null]}}                  b.分頁和排序                1.分頁                    前幾條數據 ————limit()                        db.persons.find().limit(5) --查詢前5條數據                    前跨度數據 —————skip()                        db.persons.find().limit(3).skip(5)  --前6~8 共三條 前面5條省略跳過                2.排序  ————sort()                    db.persons.find().limit(3).sort({name:1}) --前三行數據根據name升序排序   -1為倒序                    db.persons.find().limit(3).sort({name:1,age:-1}) --先升序再倒序            c.游標和其他知識                1.游標                    var p = db.persons.find();  --得到游標                    while(p.hasNext()){ --遍歷游標                        obj = p.next(); --指向下一條記錄                        PRint(obj)                    }                2.游標銷毀的條件                    1.客戶端發來請求銷毀                    2.迭代完畢                    3.超過10分鐘沒用,自動清除                3.查詢快照————針對不變的集合進行游標運動                    高級查詢選項:                        $query:doc  doc 為字段 (field:value)                        $orderby:doc                        $maxsan:integer 做多掃描文檔個數                        $min:doc    查詢開始                         $max:doc    查詢結束                        $hint:doc   使用哪個索引                        $explain:boolean    統計                        $snapshot:boolean   快照                                         示例:db.persons.find({$query:{name:"jim"},$snapshot:true},{_id:0})                         1.6 常用函數        a.findAndModify函數————返回集合        b.runCommand函數————返回更新或者刪除的文檔            示例:                ps = db.runCommand({                "findAndModify":"persons",                "query":{name:"test"},                "update":{"$set":{"age":11}},                "new":true                }).value                                 --"findAndModify"   集合名                --"query"           查詢器                --"update"          修改器                --"new"             狀態--如果true表示返回結果是更新后的,false為更新前                --"sort"            排序         c.Count函數————計數            db.persons.find({country:"USA"}).count() --查詢美國國籍的人數        d.Distinct函數————去重            db.runCommand({distinct:"persons",key"country"}).values --查詢persons集合中一共有多少個國家,分別是什么        e.Group函數————分組            db.runCommand({                group:{                ns:集合名字,                Key:分組的鍵對象,                Initial:初始化累加器,                $reduce:組分解器,                Condition:條件,                Finalize:組完成器                }            })            說明:分組首先會按照key進行分區,每組的每個文檔全部要執行$reduce的方法,其中參數為:一個是組內本條記錄,一個是累加器數據            示例:                db.runCommand({                    group:{                    ns:"persons",                    key:{"country":true},                    initial:{m:0},                    $reduce:function(doc,prev){                        if(doc.m > prev.m){                            prev.m = doc.m;                            prev.name = doc.name;                            prev.country = doc.country;                        }                    },                    condition:{m:{$gt:90}}                    }                })        f.列出所有函數            1.shell方式                db.listCommands()            2.WEB方式                http://localhost:28017/_commands  //注意啟動時需要加--rest 如: mongod --dbpath 數據目錄 --rest    1.7 索引        a.索引概述            1.創建索引的時候注意正序還是倒序            2.索引的創建在提高查詢性能的同時會影響插入性能            3.符合索引要注意索引的先后順序            4.每個鍵全建立索引不一定就能提高性能        b.管理索引            1.創建索引                db.persons.ensureIndex({id:1},{unique:true})                     id為索引列  1為升序 -1為倒序                    unique 為唯一索引            2.刪除索引                db.runCommand({dropIndexs:"persons",index:"index_name"}) 將persons的index_name索引刪除                db.runCommand({dropIndexs:"persons",index:"*"}) 將persons的所有索引刪除        c.空間索引————二維空間索引,地圖時用到,具體找度娘    1.8 固定集合        1.特性            a.固定集合默認是沒有索引的,就算是_id也是沒有索引的            b.由于不要分配新的空間,所以插入速度非???/code>            c.固定集合的順序是確定的,所以查詢速度非???/code>            d.最適合的是應用就是日志管理        2.操作            a.創建一個名叫mycoll的固定集合要求大小在100個字節,可以存儲10個文檔                db.createColletion("mycoll",{size:100,capped:true,max:10})            b.把一個普通的集合轉換成固定集合                db.runCommand({convertCapped:"persons",size=10000})            c.反向排序,默認是插入順序排序                db.mycoll.find().sort({$natural:-1})    1.9 GridFS        1.簡述            GridFS是mongoDB自帶的文件系統,使用二進制的形式存儲文件        2.利用的工具            mongofile.exe        3.使用            a.查看GridFS的所有功能                cmd -> mongofiles            b.上傳一個文件                mongofiles -d 數據庫名 -l "E:/t.txt" put "a.txt"            c.集合查看存儲文件的信息                db.fs.chunks.find()                db.fs.files.find()            d.集合中所有文件                mongofiles -d 數據庫名 list    1.10 其他腳本            1.服務器端運行eval                db.eval("function(name){return name}","test")            2.js的存儲                a.在服務上保存js變量供給函數全局調用                    db.system.js.insert({_id:name,value:"test"}) //保存變量name                    db.eval("{return name;}")  //調用變量 注意變量名必須定義。不然報錯                 //其中js相當于關系型數據庫中的存儲過程,因為value值可以為函數    1.11 運維管理            1.啟動配置                --dbpath 指定數據庫目錄 默認情況下在c:/data/db                --port   監聽端口       默認情況下是27017                --fork   用守護進程方式啟動mongoDB                --logpath   指定日志輸出目錄    默認是控制臺                --config    指定啟動項用文件的路徑                --auth      用安全認證方式啟動數據庫                示例:                    1.使用config配置文件來啟動數據庫,將啟動端口改為8888                        mongodb.conf文件(安裝目錄下)                        dbpath=D:/data                        port=8888                                                 --啟動命令                        mongod.exe --config ../mongodb.conf                                                 --客戶端連接命令                        //如果是在shell下操作  命令是mongo 127.0.0.1:8888                                     2.停止數據庫服務                        a ctrl+c組合鍵                        b admin數據庫命令關閉                            use admin                            db.shutdownServer()            2.導入/導出                a 導入數據                    使用mongoimport命令                    參數有                        --db 指定數據庫                        --collection 指定集合                        --file 指定文件                        --host 指定主機                        --port 指定端口                    示例:                        mongoimport --db test --collection person --file "D:/t.txt"                b 導出數據                    使用mongoexport命令                    參數有                        -d 指定數據庫                        -c 指定集合                        -o  指定輸出文件                        -csv  導出csv格式                        -q      過濾導出                        --type<json|csv|tsv>                        --host 指定主機                        --port 指定端口                    示例:                        1.導出本機                            mongoexport -d persons -c person -o "D:/t.txt"                         2.導出其他主機                            mongoexport --host hadoop --port 8888                c 備份/恢復                    1.運行時備份 mongodump                        示例: mongodump --host 127.0.0.1:27017 -d test -o "d:/bak" --會根據數據庫新建同名文件夾                    2.運行時恢復 mongorestore                        示例: mongorestore --host 127.0.0.1:27017 -d test -directoryperdb "d:/bak/test"                    3.懶人備份  直接將數據文件拷貝            3.鎖                a Fsync使用                    數據庫結構圖:                        讀寫操作->緩沖池->數據庫 (從上到下)                    上鎖:將緩沖池的數據全部寫進數據庫中                            示例:                                  use admin  --選擇需要上鎖數據庫                                  db.runCommand({fsync:1,lock:1}); --上鎖                    解鎖:當上鎖操作完成后的操作                            示例:db.currentOp()                    數據修復:數據庫自我修復的能力                            示例:                                use admin  --選擇需要修復數據庫                                db.repairDatabase()            4.用戶管理                在啟動時需啟動安全檢查 --auth                a 添加用戶                    use admin  --選擇需要添加用戶的數據庫                    db.addUser("root","passWord"); --參數為用戶名和密碼                //其中admin數據庫中的用戶為管理員用戶                b 啟用用戶                    db.auth("用戶名","密碼");                c 刪除用戶                    db.system.users.remove({user:"root"}); --刪除用戶名為root的用戶         1.12 主從架構        a 主從復制————一個簡單的數據庫同步備份的集群技術            1.1 在數據集群中要明確的知道誰是主服務器,主服務器只有一臺            1.2 從服務器要知道自己的數據源,也就是對于主服務器是誰            1.3 --master用來確定主服務器                --slave和-source來控制從服務器            示例:                1臺主服務器配置文件                    dbpath=數據庫目錄                    port=8888   --端口                    bind_ip=127.0.0.1  --綁定IP地址                    master=true     --主服務器標識                                 1臺從服務器配置文件                    dbpath=數據庫目錄                    port=7777   --端口 可跟主服務器一樣也可不一樣,建議不一樣                    source=127.0.0.1:8888 --指向主服務器                    slave=true      --從服務器標識            1.4 主從復制的其他設置項                --only 指定復制某個數據庫,默認為全部數據庫   從服務器端設置                --slavedelay 設置主數據庫同步數據的延遲(單位為秒)  從服務器端設置                --fastsync  以主數據庫的節點快照為節點啟動從數據庫  從服務器端設置                --autoresync    如果不同步則重新同步數據庫  從服務器端設置                --oplogsize     設置oplog的大小(主節點操作記錄存儲在local的oplog中)  主服務器端設置            1.5 動態添加和刪除從節點                添加: db.sources.insert({"host","192.168.1.100:9999"})  --添加一個新的從節點                刪除:  db.sources.remove({"host","192.168.1.100:9999"})  --刪除一個從節點        b 副本集————主從分布式            假設有個集群,三臺服務器,分別是ABC,其中A為主服務器,BC為從服務器                1 當A活躍時,BC用于備份                2 當A出現故障時,B變成活躍                3 當A再恢復后,此時AC變成備份服務器,B為主服務器                4 插入更新查詢操作只能在活躍節點上執行,備份節點只能備份            示例:                第一步:修改服務器配置文件                    A服務器配置文件                        dbpath=數據庫目錄                        port=1111                        bind_ip=127.0.0.1                        replSet=child/127.0.0.1:2222 --設定同伴                    B服務器配置文件                        dbpath=數據庫目錄                        port=2222                        bind_ip=127.0.0.1                        replSet=child/127.0.0.1:3333 --設定同伴                    C服務器配置文件                        dbpath=數據庫目錄                        port=3333                        bind_ip=127.0.0.1                        replSet=child/127.0.0.1:1111 --設定同伴                第二步:初始化副本集(在主服務器上設置)                    use admin                    db.runCommand({                        "replSetInitiate":                        {                            "_id":'child',                            "members":[                                {"_id":1,                                 "host":"127.0.0.1:1111"                                },                                {"_id":2,                                 "host":"127.0.0.1:2222"                                },                                {"_id":3,                                 "host":"127.0.0.1:3333"                                }                            ]                        }                    })                第三步:查看副本集                    rs.status()            節點參數:                standard  常規節點  參與投票 可能成為活躍節點                passive   副本節點  參與投票 不能成為活躍節點                arbiter   仲裁節點  參與投票 不能成為活躍節點                Priority  權重  0~1000 其中0表示副本節點,1~1000表示常規節點                arbiterOnly:true  --表示仲裁節點                     1.13 分片            1.使用步驟(一臺配置服務器,一臺路由器,兩臺數據庫)                1.1 創建一個配置服務器                    mongod --config 配置服務器.conf                1.2 創建路由服務器,并連接到配置服務器                    路由器調用mongos命令                1.3 添加2個分片數據庫                     80818082                1.4 利用路由器為集群添加分片(允許本地訪問)(在路由器服務器執行)                    db.runCommand({addshard:"127.0.0.1:8081",allowLocal:true})                    db.runCommand({addshard:"127.0.0.1:8082",allowLocal:true})                    //其中數據庫之前不能使用任何數據庫語句                1.5 打開數據庫分片功能(在路由器服務器執行)                    db.runCommand({"enablesharding":"數據庫名"})                1.6 對集合進行分片                    db.runCommand({"shardcollection":"數據庫名.集合名","key":{"_id":1}})                      1.7 查看集群中的所有分片                    db.shards.find()    1.14 javaAPI               1.導入jar包            2.建立一個mongo的數據庫連接對象                Mongo mo = new Mongo("127.0.0.1:8888");  默認是127.0.0.1:27017            3.查詢所有的數據庫名字                mo.getDataBaseNames();            4.創建相關數據庫的連接                DB db = mo.getDB("數據庫名");            5.查詢數據庫所有的集合名字                db.getCollectionNames();            6.創建相關集合連接                DBCollection c = db.getCollection("集合名");            7.查詢集合所有數據                DBCursor cur = c.find();                //遍歷指針                while(cur.hasNext()){                    DBObject o = cur.next();                    System.out.println(NameValue:" + o.get("name"));  //得到name字段值                }            8.其他操作                cur.count();//個數                JSON.serialize(cur);//轉換Json對象            9.新建集合操作                db.createCollection("集合名",new DBObject());//如果沒有new DBObject()不操作集合退出的話,集合會從緩存中銷毀            10.插入集合數據操作                DBObject doc = new BasicDBObject();                doc.put("name","test");                doc.put("age",12);                List<String> books = new ArrayList<String>();                books.add("MongoDB");                books.add("Java");                books.add("SQL");                doc.put("books",books);                c.insert(doc);  --當傳入參數類型是list時則是批量插入            11.刪除操作                c.remove(new BasicDBObject("_id",new ObjectId(id)))  --根據Id刪除 因為集合中的ID是ObjectId類型            12.更新操作                c.update(find,update,upsert,multi)                    --find 查詢器                    --update 更新器                    --upsert 更新或者插入  true/false                    --multi     是否批量    true/false            13.分頁操作                c.find().limit(5).skip(3); 每頁5條,從第四條開始時(含第四條)            14.排序操作                c.find.sort();            15.關閉對象                c.close();                db.close();

轉載于http://www.CUOXin.com/ciade/


上一篇:crontab


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线性视频| 日韩一区二区三区国产| 久久久精品一区二区三区| 国产精品久久久久影院日本| 国产原创欧美精品| 国产欧美日韩丝袜精品一区| 精品露脸国产偷人在视频| 色一情一乱一区二区| 精品久久久久久久大神国产| 亚洲国产精品久久| 亚洲成人激情在线观看| 国产精品九九九| 国产欧洲精品视频| 国产aⅴ夜夜欢一区二区三区| 伊人伊成久久人综合网站| 久久五月情影视| 国产亚洲成av人片在线观看桃| 久热爱精品视频线路一| 国产欧美亚洲视频| 日韩免费电影在线观看| 综合激情国产一区| 亚洲www在线| 久久久久久久久爱| 久久久精品欧美| 一本久久综合亚洲鲁鲁| 欧美大片免费观看在线观看网站推荐| 欧美美女18p| 欧美老女人性视频| 久久久久久91| 欧美一级黄色网| 国产午夜精品美女视频明星a级| 欧美高清自拍一区| 永久免费看mv网站入口亚洲| 国产亚洲精品综合一区91| 久久韩国免费视频| 色婷婷av一区二区三区在线观看| 国产成人精品电影久久久| 日韩美女主播视频| 亚洲精品欧美一区二区三区| 精品久久久久久久久中文字幕| 国产91精品在线播放| 国产精品久久97| 久久成年人免费电影| 亚洲成人动漫在线播放| 2021久久精品国产99国产精品| 欧美极品少妇xxxxⅹ喷水| 欧美一级电影免费在线观看| 久久久久久久久久亚洲| 成人在线激情视频| 亚洲精品98久久久久久中文字幕| 午夜精品一区二区三区在线视| 深夜福利一区二区| 性视频1819p久久| 久久精品久久久久久| 国产黑人绿帽在线第一区| 亚洲成人久久电影| 亚洲天堂网在线观看| 精品一区二区三区四区在线| 成人情趣片在线观看免费| 欧美性猛交xxxx免费看漫画| 亚洲一区999| 米奇精品一区二区三区在线观看| 欧美在线日韩在线| 日本高清不卡在线| 欧美日韩精品在线视频| 91亚洲精品在线观看| 欧美成人精品一区二区| 日韩电影在线观看中文字幕| 92国产精品久久久久首页| 日韩av电影免费观看高清| 亚洲国产精品视频在线观看| 国产精品久久久久久一区二区| 青草成人免费视频| 精品国产一区二区三区四区在线观看| 亚洲激情在线观看视频免费| 日本久久中文字幕| 日韩视频第一页| 亚洲全黄一级网站| 中文字幕亚洲无线码在线一区| 日韩精品有码在线观看| 久久久噜噜噜久久中文字免| 亚洲色图第三页| 久久精品国亚洲| 欧美黑人一区二区三区| 国产精品色视频| 69av成年福利视频| 欧美激情免费视频| 成人激情视频在线播放| 日韩欧美一区二区三区久久| 亚洲欧美国产精品久久久久久久| 久久午夜a级毛片| 丝袜亚洲另类欧美重口| 亚洲欧洲在线看| 日本久久亚洲电影| 亚洲a中文字幕| 91老司机在线| 国产精品青草久久久久福利99| 久久国产一区二区三区| 亚洲欧美制服丝袜| 亚洲男人天堂网站| 久久久精品免费| 日本精品va在线观看| 欧美日韩在线另类| 欧美性高潮在线| 日韩av电影免费观看高清| 国内精品中文字幕| 久久久久亚洲精品国产| 成人综合网网址| 91精品国产高清| 亚洲电影免费观看| 色琪琪综合男人的天堂aⅴ视频| 久久久久五月天| 欧美中文字幕第一页| 国产精品美女久久| 欧美成人免费全部观看天天性色| 92看片淫黄大片看国产片| 久久国产精品网站| 尤物yw午夜国产精品视频| 欧美激情亚洲综合一区| 日韩欧美在线视频| 91精品在线一区| 久久久久亚洲精品| 欧美日韩在线另类| 欧美国产高跟鞋裸体秀xxxhd| 日韩不卡在线观看| 在线观看免费高清视频97| 神马国产精品影院av| 91精品国产高清久久久久久| 亚洲的天堂在线中文字幕| 亚洲精品一区中文字幕乱码| 久久999免费视频| 欧美老女人在线视频| 亚洲一级片在线看| 成人免费网视频| 日本精品久久久久久久| 亚洲精品欧美一区二区三区| 久久久久久久久久久免费精品| 中文字幕精品www乱入免费视频| 日韩一中文字幕| 2019中文字幕在线免费观看| 欧美国产日韩在线| 2019中文字幕在线免费观看| 欧美日韩加勒比精品一区| 欧美成aaa人片在线观看蜜臀| 欧美在线欧美在线| 日韩精品久久久久| 亚洲精品美女久久久久| 亚洲国产日韩一区| 92福利视频午夜1000合集在线观看| 国自产精品手机在线观看视频| 日韩中文在线不卡| 亚洲xxxx视频| 亚洲一区二区三| 国产精品视频最多的网站| 久久久噜噜噜久久中文字免| 亚洲精品日韩欧美| 亚洲成人黄色在线| 欧美成人免费观看| 91最新国产视频| 91免费国产网站| 色综合天天狠天天透天天伊人| 欧美疯狂性受xxxxx另类| 国产精品自拍偷拍视频| 日韩精品一区二区三区第95|