成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你搞懂非關(guān)系型數(shù)據(jù)庫MongoDB

數(shù)據(jù)庫 其他數(shù)據(jù)庫 MongoDB
本文從Mongodb的安裝、配置、數(shù)據(jù)增刪改查、索引操作、數(shù)據(jù)聚合、數(shù)據(jù)備份與恢復(fù)、監(jiān)控、高級查詢、用戶操作等十個(gè)方面進(jìn)行介紹Mongodb,一篇文章帶你搞懂Mongodb數(shù)據(jù)庫。

但愿人長久,千里共嬋娟。

大家好,我是黃偉。今天給大家介紹芒果數(shù)據(jù)庫,一起來看看吧。

前言

Mongodb,分布式文檔存儲數(shù)據(jù)庫,由C++語言編寫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個(gè)高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當(dāng)前NoSql數(shù)據(jù)庫中比較熱門的一種。它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲方式。下面我們來說說它的具體用法吧。

一、安裝配置

1.下載

下載地址如下:

  1. https://590m.com/file/7715018-442253530 

然后點(diǎn)擊msi安裝文件進(jìn)行安裝,由于比較大,建議不要安裝在C盤,選擇下圖中的選項(xiàng)哦。

在這里我選擇的是E:\mongodb,按著步驟來,整體來說比較簡單,唯一需要注意的是,有一個(gè)選項(xiàng)不能勾選,如下圖:

2.配置文件

創(chuàng)建E:\mongodb\data\log目錄,用來存放日志文件;

在E:\mongodb\data\log目錄里新建mongodb.log,用來存放日志信息;

創(chuàng)建E:\mongodb\data\db目錄,用來存放數(shù)據(jù)庫數(shù)據(jù);

并在E:\mongodb目錄下創(chuàng)建mongo.config,在文件內(nèi)部復(fù)制如下文本:

  1. #數(shù)據(jù)文件  此處=后對應(yīng)到數(shù)據(jù)所存放的目錄 
  2.  
  3. dbpath=E:\mongodb\data\db 
  4.  
  5. #日志文件  此處=后對應(yīng)到日志文件所在路徑 
  6.  
  7. logpath=E:\mongodb\data\log\mongodb.log 
  8.  
  9. #錯誤日志采用追加模式,配置這個(gè)選項(xiàng)后mongodb的日志會追加到現(xiàn)有的日志文件,而不是從新創(chuàng)建一個(gè)新文件 
  10.  
  11. logappend=true  
  12.  
  13. #啟用日志文件,默認(rèn)啟用 
  14.  
  15. journal=true  
  16.  
  17. #過濾掉一些無用的日志信息,若需要調(diào)試使用請?jiān)O(shè)置為false 
  18.  
  19. quiet=true  
  20.  
  21. #端口號 默認(rèn)為27017 
  22.  
  23. port=27017 

3.配置環(huán)境變量

4.創(chuàng)建數(shù)據(jù)庫文件存放位置

進(jìn)入命令提示符,鍵入如下命令:

  1. mongod.exe  --dbpath E:\mongodb\data\db 

--dbpath 是創(chuàng)建數(shù)據(jù)庫文件的存放位置,mongo需要確認(rèn)該目錄位置

5.驗(yàn)證可否正常訪問

我們在瀏覽器中輸入以下的網(wǎng)站:

  1. http://localhost:27017/ 

如圖:

瀏覽器返回這樣一串英文即表示mongodb數(shù)據(jù)庫成功啟動。

但是每次這樣才能啟動太麻煩,我們可以將它添加到系統(tǒng)任務(wù)中,讓它開機(jī)自啟動啊。

6.安裝日志文件和服務(wù)名

  1. C:\Users\Administrator>mongod.exe --dbpath E:\mongodb\data\db -logpath E:\mongo 
  2. db\data\log\mongodb.log -install -serviceName "MongoDB" 

如果它顯示已存在,如圖:

那么,先刪除服務(wù):

  1. sc delete MongoDB 

再次輸入上個(gè)命令就好了。

7.啟動mongodb

然后我們將它啟動起來:

  1. net start MongoDB 

可以看到啟動成功了,不容易啊。

關(guān)閉mongodb服務(wù):

  1. net stop  MongoDB 

二、mongodb的數(shù)據(jù)庫增刪改查

眾所周知,mongodb沒有表這個(gè)概念,存儲都是靠集合來完成,因此我們需要創(chuàng)建的是集合。

我們先看看mongodb最常見的數(shù)據(jù)庫操作,首先 打開命令提示符,輸入如下命令進(jìn)入環(huán)境:

  1. // 創(chuàng)建數(shù)據(jù)庫 
  2. use data 
  3.  
  4. //顯示所有數(shù)據(jù)庫 
  5. show dbs  
  6. show databases 
  7.  
  8. //查看當(dāng)前數(shù)據(jù)庫 
  9. db  
  10. db.getName()   
  11.  
  12. // 刪除當(dāng)前數(shù)據(jù)庫 
  13. db.dropDatabase() 
  14.  
  15. //修復(fù)當(dāng)前數(shù)據(jù)庫 
  16. db.repairDatabase() 
  17.  
  18. //從指定的機(jī)器上復(fù)制指定數(shù)據(jù)庫數(shù)據(jù)到某個(gè)數(shù)據(jù)庫 
  19. db.copyDatabase("my_db""you_db""127.0.0.1"
  20.  
  21. //從指定主機(jī)上克隆數(shù)據(jù)庫 
  22. db.cloneDatabase(“127.0.0.1”) 
  23.  
  24. //創(chuàng)建集合 固定集合大小為100 最大數(shù)值1000 
  25. db.createCollection('student',{capped:true,size:100,max:1000}) 
  26.  
  27. //顯示所有集合 
  28. show collections 
  29.  
  30. //得到當(dāng)前db的所有聚集集合 
  31. db.getCollectionNames() 
  32.  
  33. //顯示當(dāng)前db所有聚集索引的狀態(tài) 
  34. db.printCollectionStats() 
  35.  
  36. //刪除集合 
  37. db.hw.drop() 
  38.  
  39. //得到指定名稱的聚集集合 
  40. db.getCollection("hw"
  41.  
  42. //插入集合 _id存在就報(bào)錯 
  43. db.hw.insert({_id:0001,'name':'hw','age':10}) 
  44.  
  45. //顯示集合內(nèi)容 
  46. db.hw.find() 
  47.  
  48. //顯示一條集合內(nèi)容 
  49. db.hw.findOne() 
  50.  
  51. //格式化顯示集合內(nèi)容 
  52. db.hw.find().pretty() 
  53.  
  54. //保存集合_id存在就更新 
  55. db.hw.save({_id:0001,'name':'hw','age':10}) 
  56.  
  57. //更新集合 
  58. $set 指定鍵并更新 不存在則創(chuàng)建 $unset 刪除 
  59. db.hw.update({'name':'hw'},{'name':'xz'}) //更新一條數(shù)據(jù)替換 
  60. db.hw.update({'name':'hw'},{$set{'name':'xz'}}) //更新一條數(shù)據(jù)更新 
  61. db.hw.update({'name':'hw'},{'name':'xz'},{multi:true}) //更新全部數(shù)據(jù) 
  62.  
  63. //刪除集合數(shù)據(jù) 
  64. db.hw.remove({'name':'hw'},{justOne:true}) //刪除一條數(shù)據(jù) 
  65. db.hw.remove({'name':'hw'},{justOne:false}) //刪除全部數(shù)據(jù) 
  66.  
  67. //集合重命名  
  68. db.user.renameCollection("hw"); 將user重命名為hw 
  69.  
  70. //查詢數(shù)據(jù) 
  71. $lt--小于 $lte--小于等于  
  72. $gt--大于 $gte--大于等于  
  73. $ne--不等于 $in $nin--是否處在該范圍 
  74. $and $or 查詢條件與或 
  75. $type  
  76.  
  77. /^abc/ $regex:'abc$' 正則表達(dá)式 
  78. limit(num) 顯示指定數(shù)量的結(jié)果 
  79. skip(num) 跳過指定數(shù)量的結(jié)果 
  80. $where 查詢函數(shù) 
  81. _id默認(rèn)顯示,不顯示則把值設(shè)為0 
  82. sort() 排序,參數(shù)為1升序 -1 降序 
  83. count() 統(tǒng)計(jì)查詢結(jié)果數(shù)量 也可把查詢參數(shù)放進(jìn)count中 
  84. distinct() 消除重復(fù)數(shù)據(jù) 
  85. db.hw.find({age:{$gte:18}}) 
  86. db.hw.find({age:{$in:[12,32,21]}}) 
  87. db.hw.find({$and:{age:{$in:[12,32,21]},{age:{$gte:18}}}}) 
  88. db.hw.find({age:{$gte:18}}).skip(3).limit(2) 
  89. db.hw.find({age:/^abc/,name:{$regex:'123$'}}) 
  90. db.hw.find($where:function(){return this.age<=19}) 
  91. db.hw.find({age:{$gte:18}}).sort({age:1}) 
  92. db.hw.distinct({age:{$gte:18}}) 

三、索引

  1. //建立唯一值的索引 
  2. db.hw.ensureIndex({name:1},{'unique':true}) //1升序 -1降序 
  3. db.hw.find({name:'he'}).explain('executionStats') //獲取時(shí)間 
  4.  
  5. //查看集合中所有索引 
  6. db.hw.getIndexes() 
  7.  
  8. //刪除索引 
  9. db.hw.dropIndex('name'
  10.  
  11. //重建索引 
  12. db.hw.reIndex() 

四、數(shù)據(jù)聚合

  1. //數(shù)據(jù)聚合 
  2. $group分組 $match過濾數(shù)據(jù) $project修改文檔結(jié)構(gòu) 
  3. $sort排序 $limit指定數(shù)量 $skip 跳過 
  4. $unwind 拆分?jǐn)?shù)組類型的字段 $pushAll 
  5. $sum 和 $avg 平均值 $push 添加值至數(shù)組 
  6. $pop $addToSet $pull $rename $bit 
  7. $first開頭 $last結(jié)尾 $min $max 
  8. db.hw.aggregate({$group:{_id:'$name',count:{$sum:1},avg_age:{$avg:'$age'}}} 
  9. ,{$project:{name:'$_id',count:'$count',avg_age:'$avg_age'}}, 
  10. {$match:{age:{$gt:20}}},{$unwind:{'$age',preserveNullAndEmptyArrays:true}} //true保留缺失值 

五、數(shù)據(jù)備份與恢復(fù)

  1. //備份數(shù)據(jù) 
  2. mongodump -h dbhost -d dbname -o dbdirectory 
  3. -h 服務(wù)器地址 
  4. -d 需要備份的數(shù)據(jù)庫名稱 
  5. -o 備份數(shù)據(jù)庫存放位置 
  6.  
  7. //數(shù)據(jù)恢復(fù) 
  8. mongorestore -h dbhost -d dbname --dir dbdirectory 
  9. -h 服務(wù)器地址 
  10. -d 需要恢復(fù)的數(shù)據(jù)庫實(shí)例  
  11. --dir 備份數(shù)據(jù)所在位置 

六、數(shù)據(jù)監(jiān)控

  1. //監(jiān)控 
  2. Mongostat 檢測數(shù)據(jù)庫狀態(tài) 
  3. Mongotop  sleeptime - -locks 跟蹤一個(gè)MongoDB的實(shí)例 

七、高級查詢

  1. <,>,>=,<= 
  2. 這四個(gè)就不用解釋了,最常用的,也是最簡單的。 
  3. db.collection.find({ "field" : { $gt: value } } )   // 大于  : field > value 
  4. db.collection.find({ "field" : { $lt: value } } )   // 小于  :  field < value 
  5. db.collection.find({ "field" : { $gte: value } } )  // 大于等于 : field >= value 
  6. db.collection.find({ "field" : { $lte: value } } )  // 小于等于 : field <= value 
  7.   
  8. 如果要同時(shí)滿足多個(gè)條件,記得要這樣用: 
  9.   
  10. db.collection.find({ "field" : { $gt: value1, $lt: value2 } } )    // value1 < field < value 
  11.   
  12.  
  13. $ne   不等于 
  14.   
  15. db.things.find( { x : { $ne : 3 } } ) 
  16.   
  17. 條件相當(dāng)于x<>3,即x不等于3。 
  18.  
  19.   
  20. $mod    取模運(yùn)算 
  21.   
  22. db.things.find( { a : { $mod : [ 10 , 1 ] } } ) 
  23.   
  24. 條件相當(dāng)于a % 10 == 1 即a除以10余數(shù)為1的。 
  25.  
  26.  
  27. $nin  不屬于 
  28.   
  29. db.things.find({j:{$nin: [2,4,6]}}) 
  30.   
  31. 條件相當(dāng)于 j 不等于 [2,4,6] 中的任何一個(gè)。 
  32.  
  33.  
  34. $in     屬于 
  35.   
  36. db.things.find({j:{$in: [2,4,6]}}) 
  37.   
  38. 條件相當(dāng)于j等于[2,4,6]中的任何一個(gè)。 
  39.  
  40.  
  41. $all  全部屬于 
  42.   
  43. db.things.find( { a: { $all: [ 2, 3 ] } } ) 
  44.   
  45. 與$in類似,但必須是[]的值全部都存在。 
  46.  
  47.  
  48. $size     數(shù)量,尺寸 
  49.   
  50. db.things.find( { a : { $size: 1 } } ) 
  51.   
  52. 條件相當(dāng)于a的值的數(shù)量是1(a必須是數(shù)組,一個(gè)值的情況不能算是數(shù)量為1的數(shù)組)。 
  53.  
  54.  
  55. $exists   字段存在 
  56.   
  57. db.things.find( { a : { $exists : true } } ) 
  58. db.things.find( { a : { $exists : false } } ) 
  59.   
  60. true返回存在字段a的數(shù)據(jù),false返回不存在字段a的數(shù)據(jù)。 
  61.  
  62.  
  63. $type     字段類型 
  64.   
  65. db.things.find( { a : { $type : 2 } } ) 
  66.   
  67. 條件是a類型符合的話返回?cái)?shù)據(jù)。 
  68.  
  69. 參數(shù)類型如下圖: 
  70.  
  71.  
  72. Type Name                       Type Number 
  73. Double                               1 
  74. String                               2 
  75. Object                               3 
  76. Array                                4 
  77. Binary data                          5 
  78. Object id                            7 
  79. Boolean                              8 
  80. Date                                 9 
  81. Null                                 10 
  82. Regular expression                   11 
  83. JavaScript code                      13 
  84. Symbol                               14 
  85. JavaScript code with scope           15 
  86. 32-bit integer                       16 
  87. Timestamp                            17 
  88. 64-bit integer                       18 
  89. Min key                              255 
  90. Max key                              127 
  91.   
  92.   
  93. Regular Expressions    正則表達(dá)式 
  94.   
  95. db.customers.find( { name : /acme.*corp/i } ) 
  96.   
  97. 類似sql中的like方法。 
  98.  
  99. 行開始 /^ 行結(jié)束 $/ 
  100.  
  101. 這里要特別特別特別地注意一點(diǎn),關(guān)乎查詢效率: 
  102.   
  103.   
  104. While /^a/, /^a./, and /^a.$/ are equivalent and will all use an index in the same way, the later two require scanning the whole string so they will be slower. The first format can stop scanning after the prefix is matched. 
  105.   
  106.   
  107. 意思大概就是指在查詢以a開頭字符串時(shí),可以有三種形式, /^a/, /^a./,和/^a.$/ 。后面兩種形式會掃描整個(gè)字符串,查詢速度會變慢。第一種形式會在查到符合的開頭后停止掃描后面的字符。 
  108.  
  109. 所以要特別注意。 
  110.  
  111. 幾個(gè)附加參數(shù): 
  112.  
  113. i的意思是忽略大小寫。(這個(gè)很重要,很常用) 
  114.  
  115. m的意思是支持多行。(不過ME沒有嘗試過) 
  116.  
  117. x的意思是擴(kuò)展。(也沒用過) 
  118.   
  119.   
  120. $or  或 (注意:MongoDB 1.5.3后版本可用) 
  121.   
  122. db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } ) 
  123.   
  124. 符合條件a=1的或者符合條件b=2的數(shù)據(jù)都會查詢出來。 
  125.  
  126. 與其它字段一起查詢: 
  127.   
  128. db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } ) 
  129.   
  130. 符合條件name等于bob,同時(shí)符合其它兩個(gè)條件中任意一個(gè)的數(shù)據(jù)。 
  131.   
  132.  
  133.   
  134. Value in an Array   數(shù)組中的值 
  135.  
  136. 例如數(shù)據(jù)庫中存在這樣的數(shù)據(jù): 
  137.   
  138. "_id" : ObjectId("4c503405645fa23b31e11631"), "colors" : [ "red""black" ] } 
  139.   
  140. 查詢 
  141.   
  142. db.things.find( { colors : "red" } ); 
  143.   
  144. 即可查到上面那條數(shù)據(jù)。 
  145.  
  146.  
  147. $elemMatch   要素符合 
  148.   
  149. t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } )  
  150.   
  151. 結(jié)果: 
  152.   
  153. "_id" : ObjectId("4b5783300334000000000aa9"), 
  154.   "x" : [ { "a" : 1, "b" : 3 }, 7, { "b" : 99 }, { "a" : 11 } ] 
  155.   
  156. x其中一個(gè)要素符合那個(gè)檢索條件就可以被檢索出來。(不過一般誰用像x這樣的結(jié)構(gòu)去保存數(shù)據(jù)呢?) 
  157.   
  158.   
  159. Value in an Embedded Object    內(nèi)嵌對象中的值 
  160.  
  161. 例如數(shù)據(jù)庫中存在這樣的數(shù)據(jù): 
  162.   
  163. "_id" : ObjectId("4c503773645fa23b31e11632"), "author" : { "name" : "Dan Brown""age" : 38 }, "book" : "The Lost Symbol" } 
  164.   
  165. 查詢: 
  166.   
  167. db.postings.find( { "author.name" : "Dan Brown" } ); 
  168.   
  169. 即可查到上面那條數(shù)據(jù)。 
  170.  
  171. 查詢內(nèi)嵌對象的屬性,記得要加上“”,字段是“author.name”,而不是author.name。 
  172.   
  173.   
  174. $not 不是 
  175.   
  176. db.customers.find( { name : { $not : /acme.*corp/i } } ); 
  177.   
  178. 這是一個(gè)與其它查詢條件組合使用的操作符,不會單獨(dú)使用。 
  179.  
  180. 只要你理解了前面的查詢操作即可,只是再加上了$not,結(jié)果就是得到了沒有$not的相反結(jié)果集。 
  181. sort()    排序 
  182.  
  183. 這個(gè)非常實(shí)用。即sql語言中的OrderBy。 
  184.   
  185. db.myCollection.find().sort( { ts : -1 } ) 
  186.   
  187. 也可以多個(gè)字段排序 
  188.   
  189. db.myCollection.find().sort( { ts : -1 ,ds : 1 } ) 
  190.   
  191. 這里的1代表升序,-1代表降序。 
  192.  
  193. 經(jīng)過ME的實(shí)驗(yàn),小于0的數(shù)字就是降序,0以上(包括0)就是升序。 
  194.   
  195.   
  196. limit()   skip() 
  197.   
  198. 這兩個(gè)ME想連起來講,它們就是你實(shí)現(xiàn)數(shù)據(jù)庫分頁的好幫手。 
  199.   
  200. limit()控制返回結(jié)果數(shù)量,如果參數(shù)是0,則當(dāng)作沒有約束,limit()將不起作用。 
  201.   
  202. skip()控制返回結(jié)果跳過多少數(shù)量,如果參數(shù)是0,則當(dāng)作沒有約束,skip()將不起作用,或者說跳過了0條。 
  203.   
  204. 例如: 
  205.   
  206.  db.test.find().skip(5).limit(5) 
  207.   
  208. 結(jié)果就是取第6條到第10條數(shù)據(jù)。 
  209.   
  210.   
  211. snapshot()   (沒有嘗試) 
  212.  
  213.   
  214. count()   條數(shù) 
  215.   
  216. 返回結(jié)果集的條數(shù)。 
  217.   
  218. db.test.count() 
  219.   
  220. 在加入skip()和limit()這兩個(gè)操作時(shí),要獲得實(shí)際返回的結(jié)果數(shù),需要一個(gè)參數(shù)true,否則返回的是符合查詢條件的結(jié)果總數(shù)。 
  221.   
  222. 例子如下: 
  223.   
  224. > db.test.find().skip(5).limit(5).count() 
  225. > db.test.find().skip(5).limit(5).count(true

 

八、用戶操作

  1. //添加一個(gè)用戶 
  2. db.addUser("hw"
  3. db.addUser("hw""123321"true)  #添加用戶、設(shè)置密碼、是否只讀 
  4.  
  5. //數(shù)據(jù)庫認(rèn)證、安全模式 
  6. db.auth("hw""123123"
  7.  
  8. //顯示當(dāng)前所有用戶 
  9.  show users 
  10.  
  11. //刪除用戶 
  12. db.removeUser("hw"

九、其它命令

  1. //查詢指定數(shù)據(jù)庫的集合的可用的存儲空間 
  2. db.hw.storageSize() 
  3.   
  4. //查詢集合已分配的存儲空間 
  5. db.hw.totalSize() 
  6.  
  7. //查看數(shù)據(jù)庫服務(wù)器的狀態(tài) 
  8. db.serverStatus() 
  9.  
  10. //查詢指定數(shù)據(jù)庫的統(tǒng)計(jì)信息 
  11. db.stats() 
  12.  
  13. //當(dāng)前db版本 
  14. db.version() 
  15.  
  16. //查看當(dāng)前db的鏈接機(jī)器地址 
  17. db.getMongo() 

十、可視化工具提高交互

為了讓我們的操作更加人性化,更加直觀的顯示操作數(shù)據(jù),我們可以使用一款可視化工具,今天我給大家?guī)淼木褪荖avicat-mongo 這款工具,它是Navicat家族中一款只針對mongo數(shù)據(jù)庫進(jìn)行操作的數(shù)據(jù)庫可視化工具。下載地址:

  1. https://590m.com/file/7715018-442253555 

軟件理由破解程序,只需進(jìn)行簡單操作即可進(jìn)行破解。

下載好后按照提示進(jìn)行安裝即可,

這樣基本就能完成數(shù)據(jù)庫的操作了,接下來就是大家伙照著命令去敲了。

總結(jié)

本文從Mongodb的安裝、配置、數(shù)據(jù)增刪改查、索引操作、數(shù)據(jù)聚合、數(shù)據(jù)備份與恢復(fù)、監(jiān)控、高級查詢、用戶操作等十個(gè)方面進(jìn)行介紹Mongodb,一篇文章帶你搞懂Mongodb數(shù)據(jù)庫。

 

責(zé)任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2021-08-02 10:01:09

Iterator接口Java項(xiàng)目開發(fā)

2021-05-18 09:00:28

Pythonclass

2024-10-23 16:02:40

JavaScriptPromiserejection

2021-08-17 09:55:05

JavaScript MicrotaskPromise

2021-08-30 10:01:01

Map接口HashMap

2021-05-27 09:01:14

Python文件讀寫Python基礎(chǔ)

2021-05-31 08:59:57

Java數(shù)據(jù)庫訪問JDBC

2022-02-21 09:44:45

Git開源分布式

2021-06-30 00:20:12

Hangfire.NET平臺

2023-05-12 08:19:12

Netty程序框架

2021-05-21 09:01:56

Python繼承多態(tài)

2020-06-03 11:06:26

DNS域名緩存

2020-02-28 11:29:00

ElasticSear概念類比

2021-07-01 10:01:16

JavaLinkedList集合

2022-12-14 08:03:27

CSS變量前端

2021-05-15 09:18:04

Python進(jìn)程

2020-11-10 10:48:10

JavaScript屬性對象

2021-01-29 18:41:16

JavaScript函數(shù)語法

2021-06-04 09:56:01

JavaScript 前端switch

2021-02-02 18:39:05

JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 在线看日韩 | 国产精品一区二区在线 | 免费一区二区三区在线视频 | 国产精品一区二区福利视频 | 草久久久| 国内精品久久精品 | 中文字幕乱码一区二区三区 | 欧美5区| 欧美中文字幕 | 久久最新 | 国产视频线观看永久免费 | 久久精品一区二区三区四区 | 91久久精品国产 | 国产欧美一区二区三区在线看蜜臀 | 成人性视频免费网站 | 一级大黄| 精品国产乱码一区二区三区a | 成人精品国产一区二区4080 | www.色.com | 久久精品视频一区二区三区 | 精品一二三区在线观看 | 免费观看成人性生生活片 | 国产成人精品免高潮在线观看 | 久久久91| 国产精品日日夜夜 | 日韩国产中文字幕 | 在线婷婷 | 一级电影免费看 | 久草综合在线 | 亚洲天天干 | 五月婷婷丁香婷婷 | 天堂精品视频 | 中文字幕第一页在线 | 久久国产麻豆 | 在线观看亚洲精品 | 久久久久久久久久久爱 | 精品一区二区在线观看 | 精品美女久久久久久免费 | 日韩黄a| 精品一区二区三区四区 | 成人国产在线视频 |