精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Mongodb體系結構與客戶端基本操作及注意細節

數據庫 其他數據庫 MongoDB
說到Mongodb的體系結構,免不了與關系型數據庫做個對比。本文以MySQL為例來進行一些比較。

[[128855]]

說到Mongodb的體系結構,免不了與關系型數據庫做個對比。這里以MySQL為例,我們進行一些比較:

從邏輯結構上對比:

MySQL層次概念             MongoDB層次概念

數據庫(database)      數據庫(database)

表(table)                     集合(collection)

記錄(row)                    文檔(document)

在MongoDB中沒有行、列、關系的概念,集合中的文檔相當于一條記錄,這體現了模式自由的特點。

從數據存儲結構上對比:

MySQL的每個數據庫存放在一個與數據庫同名的文件夾中,MySQL如果使用MyISAM存儲引擎,數據庫文件類型就包括.frm、.MYD(存放數據,D為Data)、.MYI(存放索引,I為Index)。

MongoDB的默認數據目錄時/data/db,它負責存儲所有MongoDB的數據文件。在MongoDB內部,每個數據庫都包含一個.ns文件和一些數據文件,而且這些數據文件會隨著數據量的增加而變得越來越多,例如系統中有一個叫mydb的數據庫,那么構成mydb這個數據庫的文件就會有mydb.ns,mydb.0,mydb.1等等組成。

mydb.ns記錄了數據庫Json對象的命名空間(ns時namespace的縮寫),也就是數據庫集合里面的命名空間。mydb.0和mydb.1是存放數據庫mydb的對象的空間,且大小按照2的n次方大小遞增。如mydb.`0的大小是16M,當數據庫mydb存滿16M之后,就會形成生成mydb.1繼續存儲,mydb.1的大小為32M,以此類推,隨著數據的增加,還會有mydb.2、mydb.3等文件出現,大小64M、128M。默認情況下,現在版本的Mongodb在數據庫剛剛建立時就會預先分配好XXX.0和XXX.1共48M空間,之后再隨著插入對象的增多而生成后續xxx.2等。

MongoDB客戶段基本操作:

首先當然是要確認MongoDB的mongod服務是打開的。詳細見我之前的博客。

打開MongoDB客戶端的方法時運行MongoDB的bin目錄下的mongo。

  1. [neil@neilhost Downloads]$ pstree -p | grep mongod 
  2. |-mongod(3556)-+-{mongod}(3557
  3. | |-{mongod}(3558
  4. | |-{mongod}(3559
  5. | |-{mongod}(3563
  6. | |-{mongod}(3564
  7. | |-{mongod}(3565
  8. | |-{mongod}(3566
  9. | |-{mongod}(3567
  10. | `-{mongod}(3568
  11. [neil@neilhost Downloads]$ cd /usr/local/mongodb/bin/mongo 
  12. bash: cd: /usr/local/mongodb/bin/mongo: 不是目錄 
  13. [neil@neilhost Downloads]$ sudo /usr/local/mongodb/bin/mongo 
  14. MongoDB shell version: 2.6.8 
  15. connecting to: test 
  16. Welcome to the MongoDB shell. 
  17. For interactive help, type "help"
  18. For more comprehensive documentation, see 
  19. http://docs.mongodb.org/ 
  20. Questions? Try the support group 
  21. http://groups.google.com/group/mongodb-user 

接下來介紹幾個基本操作,以及一個細節。

show dbs的意思是顯示mongodb中所有的數據庫。剛安裝好mongodb時,默認有兩個數據庫admin和local,不去管他們。

db指的是當前工作環境所在的數據庫。當你每次進入mongo時。默認進入的數據庫時test,它是一個隱式存儲的數據庫,如果需要進入特定的數據庫,或是想建立一個新的數據庫,只需要“use 數據庫名稱”就可以了。在mongodb中不需要create database這種操作,想用就用,mongodb會自動幫我們建立了數據庫,就像一個服務周到的“黑執事”。這里,我use dt2建立了一個新的數據庫dt2,客戶端立即現實工作環境轉入到dt2。但是,如果你show dbs,發現數據庫并沒有真正建立。是需要新建表并且插入一些數據才可以嗎?不是,只需要你在當前數據庫dt2輸入任何一個細小的操作命令,如顯示當前數據庫的集合有哪些,這時候dt2就會被真正建立了。

  1. connecting to: test 
  2. > show dbs 
  3. admin (empty) 
  4. dt1 0.078GB 
  5. local 0.078GB 
  6. > db 
  7. test 
  8. > use dt2 
  9. switched to db dt2 
  10. > show dbs 
  11. admin (empty) 
  12. dt1 0.078GB 
  13. local 0.078GB 
  14. > show collections 
  15. > show dbs 
  16. admin (empty) 
  17. dt1 0.078GB 
  18. dt2 (empty) 
  19. local 0.078GB 

在上面的命令中,show collections是顯示當前數據庫下的集合有哪些。因為現在還沒有集合,所以什么都不顯示。

接下來我們嘗試建立集合和插入數據。

  1. > db.student.find() 
  2. > show collections 

mongodb建立集合(表),依然是一個不需要聲明著建立表的過程。即不需要create collection或create table之類操作。

直接用即可。

這里我們依舊首先驗證一個小細節。什么樣子的表操作才會導致表的生成。通過上面的命令。我們在還沒有student集合的時候對其進行查詢(find()),但是,之后顯示集合的命令可以看到并沒有為dt2建立student集合。

于是我直接在student表中插入一個Json對象(存儲在Mongodb的單元是Bson對象,在邏輯概念上是一個文檔)

  1. > db.student.insert({name:"Viper",age:20}) 
  2. WriteResult({ "nInserted" : 1 }) 
  3. > show collections 
  4. student 
  5. system.indexes 

這時候,當show collections的時候可以看見,student集合已經有了。這說明在建立集合時,必須想新的集合中插入有效數據,才能真正建立集合。

總結上面的兩個細節就是,在MongoDB中建立數據庫時,只要use數據庫,并且在數據庫下執行任何看似不會有任何影響的命令,如查詢集合,都會使得數據庫建立起來;但是,如果在數據庫下,對于新建集合的文檔查詢是不會導致集合建立的,必須有文檔數據插入集合,才能使得集合真正建立起來。這樣一對細節很多人未必知道!

另外當空數據庫建立集合時,會生成一個索引表,system.indexes。該數據庫下的所有集合的ObjectId的索引值全都存放在這里面。

#p#

那么下面我們來分別說說增刪改查。

前面的例子中其實已經加入了一條文檔,這里我們在增加一個文檔到student集合。

  1. > db.student.insert({name:"TA",age:18,phone:["1311234567","021-87658765"],GPA:{Math:88,English:99}}) 
  2. WriteResult({ "nInserted" : 1 }) 
  3. > db.student.find() 
  4. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  5. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 

這里可以看到,我向mongodb的student集合中插入的兩個文檔,它們的“表結構”是不一樣的。這就是NoSQL數據庫與關系型數據庫的最重要區別之一(其他區別之前也提過,ACID特性(事務的支持),并發)。

其中第二條文檔中我們看到key-value的value可以是一些數、字符串等基本類型外,還可以是數組(其實可以理解為棧,后面的博客文章會介紹value是數組情況下的push和pop,所以理解為一種類似于棧的列表更妥貼),如上面的phone鍵。更強大的地方是,文檔,即插入的Json對象的keybalue的value可以是另一個Json對象,如上面的GPA鍵。

其實,這些數組、json對象更像是python語法中的列表和字典,哈哈哈哈。。。

這里,我將key-value的value數據類型做個整理:

  • null: 表示空值或者不存在的值
  • 布爾類型: true和false,如{male:true}
  • 32位整數: Mongodb的控制臺使用JS引擎進行輸入,而JS僅僅支持64位浮點數,所以32位整數會被自動轉義
  • 64位整數: 同上,會被自動轉義成64位浮點數
  • 64位浮點數: Mongodb的控制臺數字的默認類型。如{salary:23871.12}
  • 字符串 :UTF-8字符串都可以表示為字符串類型的數據
  • 符號: 在MongoDB中不支持這種類型,將自動轉義成字符串
  • ObjectId: MongoDB獨有,對象id時文檔中***的12位16進制的id。(時間戳 | 機器 | PID | 計數器)
  • 日期: 注意:使用的時候要加上new。如{birthday:new Date()}
  • 正則表達式: 文檔鍵值可以包含正則表達式,其正則表達式采用JS語法來表示。如:{key:/ho/i}
  • 代碼: 文檔中可以包含JS文檔。如{key:function(){/*........*/}}(可以是沒有函數名的匿名函數)
  • 數組:文檔中的key的value可以表示為數組,數組內還可以嵌套數組。
  • 內嵌文檔: 文檔可以包含別的文檔,也可以作為value嵌入到父文檔中。如{x:{name:"happyBKs",age:2}}

插入之后的Json對象我們可以看到,新插入的每個文檔都被賦予了一個_id,這是可以理解為記錄的主,是mongodb自動生存成的key,它的value是一個特定的ObjectId對象,是一個96位二進制數,由機器碼、機器進程號、時間、當前命名空間的編號四個部分自動生成,***。當然,如果你愿意,也可以在插入Json對象時自己指定_id的value,只要未發生主鍵沖突,都可以正常插入。

增加一個記錄除了用insert方法之外還有一種方法,那就是save。它的功能是當你指定Json的_id,并且_id在集合中已經存在,那么它會更新相應的文檔;否則,則插入一個新的文檔。請看下面這個例子,_id的為1的Json對象,***次save是被添加,而第二次則是被更改。

  1. > db.student.find() 
  2. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  3. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  4. > db.student.save({_id:1,name:"happyBKs",age:0}) 
  5. WriteResult({ "nMatched" : 0"nUpserted" : 1"nModified" : 0"_id" : 1 }) 
  6. > db.student.find() 
  7. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  8. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  9. "_id" : 1"name" : "happyBKs""age" : 0 } 
  10. > db.student.save({_id:1,name:"hahaBKs",age:2}) 
  11. WriteResult({ "nMatched" : 1"nUpserted" : 0"nModified" : 1 }) 
  12. > db.student.find() 
  13. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  14. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  15. "_id" : 1"name" : "hahaBKs""age" : 2 } 
  16. >

更改的操作用的是update方法。

用法為: db.collection.update({...},{...})

參數有兩個,***個指定要改誰,第二個指定改成什么。

但是事情沒有這么簡單,請看下面的例子。原本的打算是將名字為hahaBKs的記錄增加一個性別字段,但是發現除了_id的所有字段都被覆蓋掉了,只剩下了gender。這顯然不是我們的預想的結果。

  1. > db.student.find() 
  2. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  3. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  4. "_id" : 1"name" : "hahaBKs""age" : 2 } 
  5. > db.student.update({name:"hahaBKs"},{gender:"male"}) 
  6. WriteResult({ "nMatched" : 1"nUpserted" : 0"nModified" : 1 }) 
  7. > db.student.find() 
  8. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  9. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  10. "_id" : 1"gender" : "male" } 

那么問題出在哪里呢?這里我們需要用到的一個操作符$set,具體的用法以后的文章李會詳細來說。

下面我直接給出一個解決辦法的示例,如下:

  1. > db.student.insert({name:"TB",age:11,gender:"male",room:"301"}) 
  2. WriteResult({ "nInserted" : 1 }) 
  3. > db.student.find() 
  4. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  5. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  6. "_id" : 1"gender" : "male" } 
  7. "_id" : ObjectId("54fc521d3fc8173ba3302e6e"), "name" : "TB""age" : 11"gender" : "male""room" : "301" } 
  8. > db.student.update({name:"TB"},{$set:{age:22,classid:"1515"}}) 
  9. WriteResult({ "nMatched" : 1"nUpserted" : 0"nModified" : 1 }) 
  10. > db.student.find() 
  11. "_id" : ObjectId("54fb0d853fc8173ba3302e6c"), "name" : "Viper""age" : 20 } 
  12. "_id" : ObjectId("54fb10493fc8173ba3302e6d"), "name" : "TA""age" : 18"phone" : [ "1311234567""021-87658765" ], "GPA" : { "Math" : 88"English" : 99 } } 
  13. "_id" : 1"gender" : "male" } 
  14. "_id" : ObjectId("54fc521d3fc8173ba3302e6e"), "name" : "TB""age" : 22"gender" : "male""room" : "301""classid" : "1515" } 

上面的例子是,增加了一個name叫TB的對象,然后對其進行更改,更改的內容包括,將原有age鍵的值11改成22,并增加一個新的鍵classid賦值“1515”。這里需要用到的操作符就是$set,用于設置鍵的值。

刪除的方法是remove。

用法是 db.collection.remove({...})

參數里寫明想需要刪除的對象的條件。

注意,當參數空著,或者空的Json對象。即db.collection.remove()和db.collection.remove({}),將把該集合中的所有文檔全部刪除!!!

  1. > db.class.insert({classname:"English",teacher:"Mr A"}) 
  2. WriteResult({ "nInserted" : 1 }) 
  3. > db.class.insert({classname:"Math",teacher:"Mr B"}) 
  4. WriteResult({ "nInserted" : 1 }) 
  5. > db.class.find() 
  6. "_id" : ObjectId("54fc54773fc8173ba3302e6f"), "classname" : "English""teacher" : "Mr A" } 
  7. "_id" : ObjectId("54fc54833fc8173ba3302e70"), "classname" : "Math""teacher" : "Mr B" } 
  8. > db.class.remove({classname:"English"}) 
  9. WriteResult({ "nRemoved" : 1 }) 
  10. > db.class.find() 
  11. "_id" : ObjectId("54fc54833fc8173ba3302e70"), "classname" : "Math""teacher" : "Mr B" } 
  12. > db.class.remove({}) 
  13. WriteResult({ "nRemoved" : 1 }) 
  14. > db.class.find() 

上面的例子中新建了一個class集合,并插入兩個文檔。其中種種,自己看吧。

用法兩種

db.collection.find({....}),其中參數是查詢對象的條件。如果find()或find({})就是全查,這和remove很類似。

db.collection.findOne({...})和find相似,但是它只會返回***個查詢到的符合條件的對象。

  1. > db.class.insert({classname:"English",teacher:"Mr AAA"}) 
  2. WriteResult({ "nInserted" : 1 }) 
  3. > db.class.insert({classname:"English",teacher:"Mr ZZZ"}) 
  4. WriteResult({ "nInserted" : 1 }) 
  5. > db.class.insert({classname:"English",teacher:"Mr WWW"}) 
  6. WriteResult({ "nInserted" : 1 }) 
  7. > db.class.insert({classname:"English",teacher:"Mr SSS"}) 
  8. WriteResult({ "nInserted" : 1 }) 
  9. > db.class.insert({classname:"French",teacher:"Mr SSS"}) 
  10. WriteResult({ "nInserted" : 1 }) 
  11. > db.class.find({}) 
  12. "_id" : ObjectId("54fc562e3fc8173ba3302e71"), "classname" : "English""teacher" : "Mr AAA" } 
  13. "_id" : ObjectId("54fc56373fc8173ba3302e72"), "classname" : "English""teacher" : "Mr ZZZ" } 
  14. "_id" : ObjectId("54fc56413fc8173ba3302e73"), "classname" : "English""teacher" : "Mr WWW" } 
  15. "_id" : ObjectId("54fc564e3fc8173ba3302e74"), "classname" : "English""teacher" : "Mr SSS" } 
  16. "_id" : ObjectId("54fc56603fc8173ba3302e75"), "classname" : "French""teacher" : "Mr SSS" } 
  17. > db.class.findOne({classname:"English"}) 
  18. "_id" : ObjectId("54fc562e3fc8173ba3302e71"), 
  19. "classname" : "English"
  20. "teacher" : "Mr AAA" 
  21. > db.class.find({classname:"English"}) 
  22. "_id" : ObjectId("54fc562e3fc8173ba3302e71"), "classname" : "English""teacher" : "Mr AAA" } 
  23. "_id" : ObjectId("54fc56373fc8173ba3302e72"), "classname" : "English""teacher" : "Mr ZZZ" } 
  24. "_id" : ObjectId("54fc56413fc8173ba3302e73"), "classname" : "English""teacher" : "Mr WWW" } 
  25. "_id" : ObjectId("54fc564e3fc8173ba3302e74"), "classname" : "English""teacher" : "Mr SSS" } 
  26. >

博文出處:http://my.oschina.net/u/1156339/blog/384073

 

責任編輯:Ophira 來源: oschina博客
相關推薦

2009-12-28 10:42:01

MPLS技術

2010-02-25 14:46:31

2009-12-21 14:37:14

2010-04-01 16:54:06

Oracle體系結構

2009-12-23 15:27:44

2010-09-25 12:59:33

2011-11-30 14:12:05

JavaJVM虛擬機

2012-02-06 17:22:44

MySQL

2014-07-23 09:33:52

2009-07-15 13:46:26

Swing體系結構

2009-09-11 10:38:03

LINQ體系結構

2009-06-26 15:58:28

EJB

2023-12-26 09:33:47

2010-05-31 10:11:32

瘦客戶端

2015-09-30 10:36:03

eSpace UC客戶華為

2023-09-12 23:08:09

2020-04-15 21:43:22

JVMJavaVMware

2010-04-01 16:40:17

Oracle數據庫

2009-09-08 14:34:42

Linq to SQL

2009-07-10 16:07:10

TikeSwing創建MVC體系結構
點贊
收藏

51CTO技術棧公眾號

久久精品免费一区二区| 国产在线观看91一区二区三区 | 欧美亚洲激情在线| 免费无码一区二区三区| 亚洲成人不卡| 亚洲手机成人高清视频| 国产亚洲欧美一区二区| 久久久999久久久| 91精品精品| 亚洲国产三级网| 91网址在线播放| 男女视频在线| 久久精品视频免费| 91免费视频网站| 亚洲一区欧美在线| 成人自拍av| 一区二区三区日韩欧美| 久中文字幕一区| 国产乱淫a∨片免费视频| 国产女优一区| 久久中文字幕视频| 国产精品久久久久久久久久直播 | 可以免费看毛片的网站| 天堂精品中文字幕在线| 欧美成人四级hd版| 蜜臀久久99精品久久久久久| 日韩三级av高清片| 欧美性猛交xxxxxxxx| www..com日韩| 国产成人高清精品| 中文字幕成人av| 麻豆传媒一区二区| 国产 欧美 自拍| 狠狠色丁香九九婷婷综合五月| 茄子视频成人在线| 国产精久久久久久| 综合视频在线| 日韩在线视频国产| 亚洲AV无码国产成人久久| 亚洲精品在线播放| 欧美日韩综合不卡| 日韩av一二三四| 久草在线中文最新视频| 亚洲最大成人网4388xx| 看一级黄色录像| 最近高清中文在线字幕在线观看| 成人免费黄色大片| av日韩中文字幕| 国产精品一级二级| 日韩成人一区二区三区在线观看| 欧美与黑人午夜性猛交久久久| 国产精品99精品| 国精品一区二区三区| 久久夜色精品国产| 91麻豆精品成人一区二区| 日韩精品欧美| 少妇久久久久久| 老司机精品免费视频| 成人高清电影网站| 中文字幕久久久| 在线观看天堂av| 日韩欧美视频在线播放| 夜夜嗨av一区二区三区四区 | 中文字幕天堂在线| 日韩成人午夜精品| 国产精品男人爽免费视频1| 亚洲国产精品无码久久久| 日韩在线观看一区二区| 国产精品久久77777| 欧美超碰在线观看| 日本成人在线不卡视频| 国产精品一区二区三| 亚洲熟妇无码久久精品| 国产一区二区三区综合| 亚洲中国色老太| 亚洲成人一二三区| av亚洲精华国产精华精华| 久久久久久久久久久久久久一区 | www.午夜色| 精品孕妇一区二区三区| 一区二区三区在线视频播放| www.日本在线视频| 综合另类专区| 欧美日韩高清一区| 最新中文字幕日本| 美女毛片一区二区三区四区最新中文字幕亚洲| 亚洲欧美中文日韩在线| 国产aaaaaaaaa| 欧美不卡一区| 欧美一级片一区| 一区二区三区在线免费观看视频| 极品尤物av久久免费看| 国产精品亚洲综合| 国产三级电影在线| 亚洲精品乱码久久久久久久久| 妺妺窝人体色777777| 欧美特大特白屁股xxxx| 91精品国产91久久久久久最新毛片| 91精品又粗又猛又爽| 亚洲婷婷丁香| 美女精品视频一区| 天堂网免费视频| 国产精品亚洲专一区二区三区| 国产中文一区二区| 日本高清在线观看wwwww色| 亚洲在线视频免费观看| 国产视频手机在线播放| 成人av综合网| 日韩中文字幕视频在线| 国产黄色片免费看| 韩国精品久久久| 久久久久网址| 婷婷丁香在线| 欧美丝袜自拍制服另类| 黄色av网址在线观看| 午夜国产一区二区| 欧美亚洲在线播放| 国产国语亲子伦亲子| 国产欧美1区2区3区| 可以在线看的av网站| 日本免费一区二区三区等视频| 日韩成人激情在线| 538精品在线视频| 久久亚洲色图| 国产专区一区二区| 日韩激情av| 欧美丰满一区二区免费视频| av电影在线不卡| 一本久久知道综合久久| 亚洲xxx视频| 日本高清中文字幕在线| 欧美自拍偷拍午夜视频| 国产真实乱人偷精品| 国产精品激情电影| 国产精品亚洲精品| 六十路在线观看| 精品欧美一区二区三区| 亚洲婷婷在线观看| 韩日精品在线| 99精彩视频| 亚洲欧美成人影院| 91精品国产黑色紧身裤美女| 国产传媒免费在线观看| 日日嗨av一区二区三区四区| 精选一区二区三区四区五区| 日本中文字幕中出在线| 日韩欧美国产三级电影视频| 999精品视频在线观看播放| 美女视频黄免费的久久| 天堂av一区二区| 成人1区2区| 最近中文字幕2019免费| 一区二区视频播放| 亚洲色图在线看| www.色就是色.com| 婷婷亚洲五月色综合| 成人免费网站在线| 国产在线看片| 日韩一区二区三区观看| a级黄色片免费看| 国产成人综合网站| 久久精品国产sm调教网站演员| 国产精品久av福利在线观看| 欧美激情视频网| 天天射,天天干| 午夜精品福利在线| 国产男男chinese网站| 日韩电影在线观看网站| 亚洲欧美日产图| 久久天堂久久| 久久久日本电影| 午夜激情小视频| 色在线视频观看| 国产乱码精品一区二区三| 2021狠狠干| 97se亚洲国产一区二区三区| 国模视频一区二区| 青青草娱乐在线| 欧美色爱综合网| 亚洲精品卡一卡二| 国产成人av电影在线| 国产黄页在线观看| 日韩精品久久| 99中文视频在线| 91精品产国品一二三产区| 一区二区欧美亚洲| 99精品在线视频观看| 无码av免费一区二区三区试看| 日韩极品视频在线观看 | 91夜夜揉人人捏人人添红杏| 怡红院在线观看| 日韩二区三区在线| 亚洲专区在线播放| 午夜一区二区三区在线观看| 欧美激情亚洲色图| 国产福利91精品| 日av中文字幕| 国产字幕视频一区二区| 色爱区成人综合网| 97青娱国产盛宴精品视频| 日韩av电影在线网| 欧美人与性动交α欧美精品图片| 亚洲日本aⅴ片在线观看香蕉| 999免费视频| 日本道精品一区二区三区| 日本午夜精品视频| 99麻豆久久久国产精品免费| 国产日韩欧美久久| 中文高清一区| mm131午夜| 国产精品嫩模av在线| 91九色在线观看| av成人免费| 91精品国产91久久久久久久久| 麻豆传媒在线完整视频| 亚洲男人天堂2019| 亚洲欧美高清视频| 欧美美女喷水视频| 天天干天天干天天操| 亚洲精选视频在线| 亚洲精品国产精品国自| 99v久久综合狠狠综合久久| 欧美一级小视频| 日韩精品一卡二卡三卡四卡无卡| 日韩伦理在线免费观看| 亚洲91中文字幕无线码三区| 日本婷婷久久久久久久久一区二区| 超碰cao国产精品一区二区| 国产一区二区丝袜| 自拍偷自拍亚洲精品被多人伦好爽 | 欧美伦理影院| 九色一区二区| 久久悠悠精品综合网| 豆国产97在线| 日本亚洲视频| 亚洲一区二区少妇| 91亚洲精品在看在线观看高清| 国产国语刺激对白av不卡| 亚洲黄色中文字幕| 91国产精品电影| 136福利第一导航国产在线| 欧美第一淫aaasss性| av在线免费网站| 久久好看免费视频| 免费观看久久久久| 色偷偷91综合久久噜噜| 91免费在线| 最新国产精品亚洲| 日本免费在线观看| 久久久成人av| 50度灰在线| 色与欲影视天天看综合网| av毛片在线看| 欧美激情视频一区| 成人影音在线| 欧美孕妇与黑人孕交| 成人午夜视屏| 国产精品毛片a∨一区二区三区|国| 香蕉久久免费电影| 国产精品久久久久久搜索 | 97中文字幕在线观看| 国产成人啪免费观看软件| 女同性αv亚洲女同志| 处破女av一区二区| 日b视频在线观看| 久久综合999| 国产123在线| 国产精品久久久久久久岛一牛影视| av资源在线免费观看| 综合久久给合久久狠狠狠97色 | 疯狂欧美牲乱大交777| 国产亚洲欧美在线精品| 欧美亚洲国产怡红院影院| 国产精品久久久久久久免费| 日韩欧美卡一卡二| 午夜视频www| 国产一区二区三区在线看| 亚乱亚乱亚洲乱妇| 欧美激情国产高清| 日本在线高清| 国产日韩欧美在线| 136福利精品导航| 免费av一区二区三区| 欧美激情国产在线| 成人免费a级片| 视频一区二区欧美| mm1313亚洲国产精品无码试看| 韩国欧美国产一区| 丰满大乳奶做爰ⅹxx视频| 国产精品丝袜黑色高跟| 欧美毛片在线观看| 色综合久久99| 国产视频www| 亚洲精品自产拍| a天堂中文在线| 久久久日本电影| 久久久久伊人| 精品视频一区二区| 亚洲成人精品| aaa毛片在线观看| 国产精品一区二区你懂的| 日韩av一二区| 一区二区三区四区不卡在线| 欧美男人天堂网| 亚洲国产高清福利视频| 日本视频在线免费观看| 5566成人精品视频免费| 日韩精品一级| 亚洲乱码一区二区三区| 中文亚洲欧美| 男男受被啪到高潮自述| 欧美激情自拍偷拍| 久久夜靖品2区| 欧美一区二区在线不卡| 成黄免费在线| 欧美中文字幕视频在线观看| 亚洲成av人片在线观看www| 日韩精品一线二线三线| 在线一区免费观看| 国产又粗又猛又爽又黄| 国产精品久久久久7777按摩| 久久一区二区三区视频| 欧美mv日韩mv| 黄av在线播放| 成人国产在线视频| 精品国产乱码| 亚洲国产精品久久久久爰色欲| 成人蜜臀av电影| 免费一级片在线观看| 91精品福利在线一区二区三区 | 国产在线精品91| 国产精品原创巨作av| 亚洲一区电影在线观看| 欧美色大人视频| 国产成人天天5g影院在线观看| 欧美在线视频网| 奇米影视777在线欧美电影观看| 草草草视频在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 男人天堂资源网| 欧美日韩美少妇| se在线电影| 国产精品久久久久久久久| 在线成人动漫av| 日韩激情免费视频| 99久久国产免费看| 男女啊啊啊视频| 亚洲毛片在线看| 亚洲成人人体| 日韩亚洲不卡在线| 免费看欧美女人艹b| 91麻豆制片厂| 欧美丰满美乳xxx高潮www| www免费在线观看| 97中文在线| 亚洲高清网站| 亚洲国产精品成人综合久久久| 欧美性xxxx极品hd满灌| 男生女生差差差的视频在线观看| 欧美最顶级的aⅴ艳星| 国产在线日韩精品| 亚洲精品视频导航| 亚洲欧洲在线观看av| 国产熟女精品视频| 久久久亚洲国产| 亚洲+变态+欧美+另类+精品| 波多野结衣作品集| 国产精品乱人伦中文| av官网在线观看| 97色伦亚洲国产| 国产传媒欧美日韩成人精品大片| 亚洲77777| 亚洲美女区一区| 婷婷丁香一区二区三区| 青青草成人在线| 欧美日韩一二三四| 青青草原播放器| 午夜国产精品一区| 国产综合视频一区二区三区免费| 国产精自产拍久久久久久| 欧美 亚欧 日韩视频在线| 精品国产一区在线| 色综合久久99| av毛片在线播放| 蜜桃av色综合| 黄页视频在线91| 国产精品第一页在线观看| 亚洲片av在线| 精品视频在线观看网站| 欧美性久久久久| 日韩美女久久久| 亚洲 小说区 图片区 都市| 国产精品亚洲精品| 999亚洲国产精| 看黄色录像一级片| 亚洲精品久久久久久下一站 | 不卡的一区二区| 日本精品一区二区三区四区的功能| 欧美极品视频| 久久99欧美|