精品欧美一区二区三区在线观看 _久久久久国色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在线视频网址| 日本伊人精品一区二区三区介绍| 欧美福利第一页| 激情综合婷婷| 大伊人狠狠躁夜夜躁av一区| 五月天国产一区| 狠狠综合久久av一区二区 | www.xxx麻豆| 全色精品综合影院| 国产一区不卡视频| 热久久99这里有精品| 在线日韩国产网站| 视频福利一区| 欧美一区二区在线观看| 国产免费一区二区三区视频| 成人影欧美片| 久久蜜臀中文字幕| 亚洲综合色av| 成年人晚上看的视频| 欧美午夜一区二区福利视频| 一区二区三区美女xx视频| 亚洲精品一区二区18漫画| 综合在线影院| 亚洲国产精品一区二区久久恐怖片 | 国产亚洲精品美女| 永久免费看片在线观看| 最新日韩一区| 精品成人久久av| 大桥未久一区二区三区| 国内在线免费高清视频| 国产成人免费视频网站 | av 日韩 人妻 黑人 综合 无码| 人成免费电影一二三区在线观看| 国产**成人网毛片九色 | 日本阿v视频在线观看| www.国产精品.com| 91蝌蚪porny| 国产精品二区二区三区| 国产一区二区在线不卡| 日本不卡一区二区| 青青青国产精品一区二区| 国产精品999久久久| 亚洲区综合中文字幕日日| 中文字幕亚洲自拍| 日韩一级av毛片| 神马午夜久久| 日韩av最新在线观看| 日本一区二区在线免费观看| 亚洲一区二区电影| 日韩区在线观看| 久久久久亚洲av无码麻豆| 久久99国产精品二区高清软件| 欧美性猛交xxxx乱大交| 久久久久免费看黄a片app| 日本资源在线| 亚洲一二三专区| 欧美黄网在线观看| 美女尤物在线视频| 亚洲一区二区美女| 成人免费性视频| 黄色影院在线看| 亚洲成a人v欧美综合天堂| 国产女主播自拍| 97在线视频免费观看完整版| 亚洲香蕉伊在人在线观| 精品人妻少妇一区二区| 91丝袜在线| 精品美女久久久久久免费| 777米奇影视第四色| 日本欧美日韩| 欧美日韩国产综合视频在线观看| 午夜精品免费看| 久久久久久亚洲精品美女| 欧美一级搡bbbb搡bbbb| 国产日韩视频一区| 亚洲区小说区图片区qvod按摩| 亚洲欧美中文日韩v在线观看| av电影网站在线观看| 久久人人88| 久久伊人免费视频| 日本午夜小视频| 日本亚洲最大的色成网站www| 国产美女精品视频免费观看| 国产aⅴ一区二区三区| 大白屁股一区二区视频| 久久伦理网站| 调教视频免费在线观看| 一区二区在线看| 日韩精品一区二区三区久久| 欧美不卡高清一区二区三区| 777午夜精品视频在线播放| 久久久久久久久久久久国产精品| 露出调教综合另类| 中文字幕亚洲色图| 久久久久成人精品无码| 亚洲免费网站| 亚洲va电影大全| 亚洲人成色777777精品音频| 国产精品天干天干在线综合| 97超碰国产精品| 超碰aⅴ人人做人人爽欧美| 欧美日韩视频专区在线播放| 亚洲精品久久一区二区三区777| 欧美美乳视频| 欧美成人免费全部| 潘金莲一级淫片aaaaaa播放| 国产精品影视在线| 欧美视频小说| heyzo在线播放| 精品视频在线视频| 中文字幕av观看| 欧美超碰在线| 国产999精品久久久| av高清一区二区| 国产日韩精品久久久| 男人添女荫道口女人有什么感觉| 在线成人视屏| 亚洲黄页网在线观看| 成人高潮免费视频| 天堂影院一区二区| 国产精品毛片一区视频| 麻豆视频网站在线观看| 日本高清无吗v一区| 中文字幕乱妇无码av在线| 精品福利久久久| 69久久夜色精品国产69| 性猛交富婆╳xxx乱大交天津 | 免费视频一区二区三区在线观看| 成人在线播放av| 成人精品一区二区三区免费| 舔着乳尖日韩一区| 国产精品日日摸夜夜爽| 欧美h版在线| 国产精品久久久久久久久| 亚洲欧美综合在线观看| 亚洲成av人片在线| 无码人妻一区二区三区一| 亚洲91久久| 国产精品亚发布| 福利小视频在线观看| 精品久久久一区二区| 久久久久亚洲AV成人无码国产| 欧美片第1页综合| 96国产粉嫩美女| 麻豆网站在线| 91精品视频网| 免费成人深夜夜行网站| 狠狠色狠狠色综合| 天天爱天天做天天操| 一区在线不卡| 日韩一区二区福利| 国产精品爽爽久久久久久| 国产精品久久久久久久久晋中 | 亚洲中文字幕无码中文字| 大型av综合网站| 欧美激情精品久久久久| 亚洲欧美激情国产综合久久久| 亚洲女同一区二区| 岛国大片在线免费观看| 国产精品va| 精品国产乱码久久久久久久软件| 国产拍在线视频| 日韩精品免费在线播放| 成年人av网站| 欧美国产日韩在线观看| 免费成年人高清视频| 91亚洲国产| 97netav| 高清毛片在线观看| 亚洲天堂日韩电影| 91美女精品网站| 一区二区三区欧美久久| 在线观看欧美一区二区| 亚洲精品一级| 日韩av在线电影观看| 日韩福利影视| 欧美激情在线狂野欧美精品| 日本不卡视频一区二区| 欧美性videosxxxxx| 91人妻一区二区三区蜜臀| 国产91精品在线观看| 久久久久久久久久久视频| 精品国产123区| 91久久精品在线| sm久久捆绑调教精品一区| 亚洲网站在线观看| aaaa一级片| 色综合激情久久| 情侣偷拍对白清晰饥渴难耐| 成人免费视频app| 欧美一级黄色片视频| 婷婷精品进入| 久久99精品久久久久久久久久| 午夜av成人| 久久久久久久一| 番号集在线观看| 精品久久国产字幕高潮| aaa在线视频| 亚洲精品成人a在线观看| 国产精品一区二区入口九绯色| 久久电影国产免费久久电影| 日韩人妻无码精品久久久不卡| 国产一区国产二区国产三区| 成人国产精品免费视频| 在线观看特色大片免费视频| 日韩中文字幕在线看| 涩爱av在线播放一区二区| 欧美精品久久久久久久多人混战| 亚欧洲精品在线视频| 国产精品久久久久久福利一牛影视 | 亚洲欧美韩国| 欧美黑人xxx| 夜级特黄日本大片_在线| 日韩精品极品视频免费观看| 99久久精品国产一区色| 在线国产亚洲欧美| 久久久久久久久久免费视频| 亚洲乱码国产乱码精品精可以看| 国产伦精品一区二区三区视频女| 成人av一区二区三区| 免费黄频在线观看| 美女脱光内衣内裤视频久久网站| 中文字幕无码精品亚洲35| 欧美欧美全黄| 日本xxxxx18| 久久一级电影| 日韩电影免费观看高清完整| 国产二区三区在线| 蜜臀精品一区二区三区在线观看 | 搡的我好爽在线观看免费视频| 国产日韩精品视频一区二区三区 | 丝袜诱惑制服诱惑色一区在线观看| 97在线免费视频观看| 国产精品黑丝在线播放| 午夜精品视频在线观看一区二区| 牲欧美videos精品| 国产主播一区二区三区四区| 97久久综合区小说区图片区 | 久久免费视频66| 成人永久免费| 日韩影片在线观看| 91精品黄色| 超碰成人97| 国产精品午夜av在线| 色悠久久久久综合先锋影音下载| 92国产精品视频| 精品国产乱码久久久久久樱花| 国产在线观看精品一区二区三区| 国产精品伊人| 91色视频在线导航| 成人国产精品一区二区网站| 91久久精品在线| 日韩在线精品强乱中文字幕| 超碰在线观看97| 国产精品18hdxxxⅹ在线| 国产精品午夜av在线| 亚洲激情播播| 日韩啊v在线| 色乱码一区二区三区网站| 亚洲一区二区精品在线观看| 婷婷中文字幕一区| av片在线免费| 亚洲精品欧洲| 无遮挡又爽又刺激的视频| 日韩高清欧美激情| 亚洲图片 自拍偷拍| 国产精品66部| 亚洲中文字幕一区| 国产午夜亚洲精品理论片色戒| 国产精品久久免费观看| 自拍偷拍欧美精品| 免费视频一二三区| 一本色道亚洲精品aⅴ| 综合久久中文字幕| 欧美一二三四区在线| 午夜av免费观看| 尤物精品国产第一福利三区| 免费日本一区二区三区视频| 欧美激情按摩在线| 国产精品伦理| 91在线观看免费网站| 国产精品极品在线观看| 欧美一级片免费观看| 91综合在线| 国产素人在线观看| 日本伊人午夜精品| 国内自拍偷拍视频| 久久精品视频免费| www.毛片com| 欧美网站在线观看| 99久久一区二区| 日韩精品999| 国产在线观看免费麻豆| 欧美激情中文字幕在线| 成人国产精选| 国产精品国产一区二区| 日韩av密桃| 日韩av黄色网址| 国内精品免费**视频| 丰满大乳奶做爰ⅹxx视频| 国产精品久久久久久福利一牛影视| 日产电影一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 三级网站免费观看| 久久精品99无色码中文字幕 | 中文字幕亚洲精品乱码 | 精品一区二区三区欧美| 加勒比精品视频| 亚洲天堂中文字幕| 亚洲成人av影片| 日韩精品中文字幕一区二区三区 | 九九精品在线播放| 欧美日韩女优| 欧美男人的天堂| 亚洲午夜伦理| 亚洲精品20p| 国产亚洲综合av| 日本天堂网在线观看| 日韩天堂在线观看| 视频免费一区| 国产精品爱久久久久久久| 欧美午夜寂寞| 国产婷婷一区二区三区| 国产麻豆欧美日韩一区| 18精品爽国产三级网站| 色综合色综合色综合| 高清一区二区三区四区| 久久6免费高清热精品| 精品久久在线| 天堂精品视频| 日韩精品欧美精品| 波多野结衣a v在线| 精品久久久久久久久久ntr影视| 精品人妻一区二区三区麻豆91| 日韩中文在线中文网三级| av成人亚洲| 午夜精品福利一区二区| 视频一区免费在线观看| 国产精品一级黄片| 天天色综合成人网| 天堂在线视频免费观看| 欧美激情在线狂野欧美精品| xvideos.蜜桃一区二区| 青青草视频在线视频| 国产精品99久久久久久宅男| 久久免费看少妇高潮v片特黄| 制服丝袜在线91| 黄色av电影在线播放| 91亚洲va在线va天堂va国| 91九色精品国产一区二区| 亚洲涩涩在线观看| 亚洲欧美日本韩国| 国产a级免费视频| 久久久久久九九九| 久久国产精品免费精品3p| 欧美成人免费在线观看视频| 久久亚洲二区三区| 久久精品五月天| 色噜噜亚洲精品中文字幕| 成人激情久久| 黄色三级中文字幕| 久久综合五月天婷婷伊人| 免费观看日批视频| 亚洲情综合五月天| 高清亚洲高清| 国产欧美自拍视频| 成人av在线观| 波多野结衣爱爱| 久久五月天色综合| **爰片久久毛片| 91传媒久久久| 国产精品国产馆在线真实露脸 | av在线日韩| 国产日韩视频在线播放| 国产成人精品1024| 国产超碰人人爽人人做人人爱| 亚洲欧美www| 欧美爱爱视频| 黄色激情在线视频| 久久久精品欧美丰满| 亚洲图片在线播放| 久久久久久久激情视频| 国产亚洲电影| 久久综合在线观看| 粉嫩老牛aⅴ一区二区三区| h视频在线观看免费| 成人av片网址| 三级亚洲高清视频| 精品99久久久久成人网站免费 | 一本久久精品一区二区| 成人亚洲综合天堂| 97自拍视频| 免费av网站大全久久| 亚洲精品在线观看av| 综合久久五月天| 激情小说亚洲色图| 日本黄色福利视频| 欧美三级免费观看|