久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

操作MongoDB

發布時間:2025/7/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作MongoDB 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有用的命令

db.help db.collectionname.help

  

時區問題

> db.test.insert({"date":new Date("2012-2-2"),"num":1}) > db.test.insert({"date":new Date("2012-02-02"),"num":2}) > db.test.insert({"date":new Date("2012-02-02 00:00:00"),"num":3}) > db.test.find() { "_id" : ObjectId("538ebd629ceb8ee60dcd6a0e"), "date" : ISODate("2012-02-01T16:00:00Z"), "num" : 1 } { "_id" : ObjectId("538ebd6e9ceb8ee60dcd6a0f"), "date" : ISODate("2012-02-02T00:00:00Z"), "num" : 2 } { "_id" : ObjectId("538ebd7e9ceb8ee60dcd6a10"), "date" : ISODate("2012-02-01T16:00:00Z"), "num" : 3 } > db.test.find() { "_id" : ObjectId("538ebd629ceb8ee60dcd6a0e"), "date" : ISODate("2012-02-01T16:00:00Z"), "num" : 1 } { "_id" : ObjectId("538ebd6e9ceb8ee60dcd6a0f"), "date" : ISODate("2012-02-02T00:00:00Z"), "num" : 2 } { "_id" : ObjectId("538ebd7e9ceb8ee60dcd6a10"), "date" : ISODate("2012-02-01T16:00:00Z"), "num" : 3 } >

?

開啟子節點的讀

rs.slaveOk();

?

開啟 Profiling ?功能?

有兩種方式可以控制 Profiling ?的開關和級別,第一種是直接在啟動參數里直接進行設置。?啟動MongoDB時加上–profile=級別 ?即可。? 也可以在客戶端調用 db.setProfilingLevel(級別) ?命令來實時配置,Profiler ?信息保存在?system.profile 中。我們可以通過db.getProfilingLevel()命令來獲取當前的Profile級別,類似如下操作?

?db.setProfilingLevel(2); ???

上面profile的級別可以取0,1,2 ?三個值,他們表示的意義如下:?

0 – ?不開啟?

1 – ?記錄慢命令 (默認為>100ms)??

2 – ?記錄所有命令??

?

Profile ?記錄在級別 1 時會記錄慢命令,那么這個慢的定義是什么?上面我們說到其默認為100ms,當然有默認就有設置,其設置方法和級別一樣有兩種,一種是通過添加–slowms 啟動參數配置。第二種是調用db.setProfilingLevel時加上第二個參數:?

db.setProfilingLevel( 1 , 10 );?

?

查詢 Profiling ?記錄?

?

與 MySQL 的慢查詢日志不同,MongoDB Profile ?記錄是直接存在系統 db 里的,記錄位置?system.profile ?,所以,我們只要查詢這個 Collection 的記錄就可以獲取到我們的 Profile ?記錄了。列出執行時間長于某一限度(5ms)的 Profile ?記錄:?

db.system.profile.find( { millis : { $gt : 5 } } )?

?

查看最新的 Profile ?記錄:?

?db.system.profile.find().sort({$natural:-1}).limit(1)?

?{ "ts" : ISODate("2012-05-20T16:50:36.321Z"), "info" : "query test.system.profile reslen:1219?

nscanned:8 ?\nquery: { query: {}, orderby: { $natural: -1.0 } } ?nreturned:8 bytes:1203", "millis" :? 0 }?

?

字段說明?

ts: ?該命令在何時執行? info: ?本命令的詳細信息? reslen: ?返回結果集的大小? nscanned: ?本次查詢掃描的記錄數? nreturned: ?本次查詢實際返回的結果集? millis: ?該命令執行耗時,以毫秒記??

?

MongoDB Shell ?還提供了一個比較簡潔的命令 show profile,可列出最近5 條執行時間超過

1ms的 Profile ?記錄。 ?

?

db.ttl.ensureIndex({"Date": 1}, {expireAfterSeconds: 300})

cfg = { _id: "set1", members: [

... { _id:0, host:"10.96.16.118:27017" },
... { _id:1, host:"10.96.16.119:27017" },
... { _id:2, host:"10.96.22.40:27022" , "arbiterOnly": true}
... ]}

rs.initiate(cfg)

收縮日志

在admin數據庫下執行

db.runCommand({logRotate:1}) mongodb會重新寫個日志

?

?

上篇講過每個集群結點都有一個priority屬性,默認為1。要改變一個實例的角色,我們只需要給新的實例設置一個高于當前Primary的priority就可以實現了。

注意因為只有Primary結點是可寫的,所以重新配置群集的操作只能在Primary結點上進行。

rs0:PRIMARY> conf.members[1].priority = 2 2 rs0:PRIMARY> rs.reconfig(conf) Fri Jan 24 15:25:36.069 DBClientCursor::init call() failed Fri Jan 24 15:25:36.070 trying reconnect to localhost:27011 Fri Jan 24 15:25:36.070 reconnect localhost:27011 ok reconnected to server after rs command (which is normal)rs0:SECONDARY>

?

?

追加內容(numa服務器下mongodb的部署)

numactl --interleave=all ./mongod -f ./mongodb.conf

0:追加內容(MapReduce)

MapReduce是一種計算模型,簡單的說就是將大批量的工作(數據)分解(MAP)執行,然后再將結果合并成最終結果(REDUCE)。這樣做的好處是可以在任務被分解后,可以通過大量機器進行并行計算,減少整個操作的時間。

舉例1

數據

View Code for (var i = 0; i < 10; i++) { ... var u = { name : "user" + i, age : i, sex : i % 2 }; ... db.users.insert(u); ... }

A:男女同學分別的人數(select Sex,count(*) from users group by Sex)

m = function() { emit(this.sex, 1) } r = function(key, values) { ... ... var x = 0; ... ... values.forEach(function(v) { x += v ;}); ... ... return x; ... ... }

B: 男女同學的平均年齡(select Sex,avg(age) from users group by Sex)

m = function() { emit(this.sex, this.age) } r = function(key, values) { ... ... var x = 0,num=0; ... ... values.forEach(function(v) { x += v ;num++}); ... ... return x/num; ... ... }

另一個例子,計算一個標簽系統中每個標簽出現的次數

> db.things.insert( { _id : 1, tags : ['dog', 'cat'] } ); > db.things.insert( { _id : 2, tags : ['cat'] } ); > db.things.insert( { _id : 3, tags : ['mouse', 'cat', 'dog'] } ); > db.things.insert( { _id : 4, tags : [] } ); > // map function > m = function(){ ... this.tags.forEach( ... function(z){ ... emit( z , { count : 1 } ); ... } ... ); ...}; > // reduce function > r = function( key , values ){ ... var total = 0; ... for ( var i=0; i<values.length; i++ ) ... total += values[i].count; ... return { count : total }; ...}; > res = db.things.mapReduce(m, r, { out : "myoutput" } ); > res { "result" : "myoutput", "timeMillis" : 12, "counts" : { "input" : 4, "emit" : 6, "output" : 3 }, "ok" : 1, } > db.myoutput.find() {"_id" : "cat" , "value" : {"count" : 3}} {"_id" : "dog" , "value" : {"count" : 2}} {"_id" : "mouse" , "value" : {"count" : 1}} > db.myoutput.drop()

從上面的三個列子我們可以看出

1:map函數只要用于從樣本空間中過濾出key-values集合,其中key就是emit的第一個參數,values就是第二個參數

2:reduce函數主要是要將key-values轉換成key-value的形式,也就是把這一個集合變成一個單一的值

?

?

?

1:各文件作用

mongo.exe 客戶端程序 mongod.exe 服務端程序 mongodump.exe 備份程序 mongoexport.exe 數據導出程序 mongofiles.exe GridFS工具,內建的分布式文件系統 mongoimport.exe 數據導入程序 mongorestore.exe 數據恢復程序 mongos.exe 數據分片程序,支持數據的橫向擴展 mongostat.exe 監視程序

2:部署

MongoDB可以以DOS作為容器運行也可以以服務形式運行。

以DOS為容器運行

mongod --dbpath E:\mongodb\bin\db -- port 27020 --logpath E:\mongodb\bin\log.txt --directoryperdb 讓系統為每個 DB 創建一個獨立子目錄
與 Logging 有關的參數除了 --logpath,還有 --logappend 和 --verbose。

默認情況下,Logging 是覆蓋模式(overwrite),通過 --logappend 可以添加模式記錄日志。
參數 --verbose 設置記錄等級,相當于 -v,更多的級別包括 -vv 直到 -vvvvv。與之相對的是 --quiet,生成最少的日志信息。
還可以用 --cpu 記錄 CPU 的相關信息。
admin.serverStatus() 命令可以獲取 MongoDB 的運行統計信息。(uptime: 服務器運行時間(秒)。localTime: 服務器本地時間。mem: 服務器內存信息。connections: 當前連接數。opcounters: 操作統計。)
db.stats 查看數據庫狀態信息。

以WindowsServer為容器運行

mongod --dbpath E:\mongodb\bin\db --logpath E:\mongodb\bin\log.txt --install

以服務方式運行不能指定端口。

驗證方法

mongo --port 27017 show dbs

3:復制數據庫

同數據庫系統復制

E:\mongodb\bin>mongo MongoDB shell version: 1.8.2 connecting to: test > use person switched to db person > for (var i = 0; i < 10; i++) db.person.save({id : + i}) > show dbs admin (empty) local (empty) person 0.03125GB > db.copyDatabase("person","person1") { "ok" : 1 } > show dbs admin (empty) local (empty) person 0.03125GB person1 0.03125GB

異數據庫系統復制

E:\mongodb\bin>mongo --port 27020 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27020/test > show dbs admin (empty) local (empty) > db.copyDatabase("person", "person2", "10.53.139.138:27017") { "ok" : 1 } > show dbs admin (empty) local (empty) person2 0.03125GB

4:鎖定數據庫

> db.person.find() { "_id" : ObjectId("4e27baae7ff2440ba274d767"), "id" : 0 } { "_id" : ObjectId("4e27baae7ff2440ba274d768"), "id" : 1 } { "_id" : ObjectId("4e27baae7ff2440ba274d769"), "id" : 2 } { "_id" : ObjectId("4e27baae7ff2440ba274d76a"), "id" : 3 } { "_id" : ObjectId("4e27baae7ff2440ba274d76b"), "id" : 4 } { "_id" : ObjectId("4e27baae7ff2440ba274d76c"), "id" : 5 } { "_id" : ObjectId("4e27baae7ff2440ba274d76d"), "id" : 6 } { "_id" : ObjectId("4e27baae7ff2440ba274d76e"), "id" : 7 } { "_id" : ObjectId("4e27baae7ff2440ba274d76f"), "id" : 8 } { "_id" : ObjectId("4e27baae7ff2440ba274d770"), "id" : 9 } { "_id" : ObjectId("4e27bf5c9033de6afd328581"), "id" : 10 } > admin=db.getSisterDB("admin") admin > admin.runCommand({fsync : 1, lock : 1}) //鎖定 { "info" : "now locked against writes, use db.$cmd.sys.unlock.findOne() to unlock", "ok" : 1 } > db.person.find()//鎖定期間可讀 { "_id" : ObjectId("4e27baae7ff2440ba274d767"), "id" : 0 } { "_id" : ObjectId("4e27baae7ff2440ba274d768"), "id" : 1 } { "_id" : ObjectId("4e27baae7ff2440ba274d769"), "id" : 2 } { "_id" : ObjectId("4e27baae7ff2440ba274d76a"), "id" : 3 } { "_id" : ObjectId("4e27baae7ff2440ba274d76b"), "id" : 4 } { "_id" : ObjectId("4e27baae7ff2440ba274d76c"), "id" : 5 } { "_id" : ObjectId("4e27baae7ff2440ba274d76d"), "id" : 6 } { "_id" : ObjectId("4e27baae7ff2440ba274d76e"), "id" : 7 } { "_id" : ObjectId("4e27baae7ff2440ba274d76f"), "id" : 8 } { "_id" : ObjectId("4e27baae7ff2440ba274d770"), "id" : 9 } { "_id" : ObjectId("4e27bf5c9033de6afd328581"), "id" : 10 } > db.person.save({id : 11 })鎖定期間寫被阻塞 ----------------- 另開CMD E:\mongodb\bin>mongo MongoDB shell version: 1.8.2 connecting to: test > use admin switched to db admin > db.$cmd.sys.unlock.findOne() { "ok" : 1, "info" : "unlock requested" } ------------------ > db.person.find() { "_id" : ObjectId("4e27baae7ff2440ba274d767"), "id" : 0 } { "_id" : ObjectId("4e27baae7ff2440ba274d768"), "id" : 1 } { "_id" : ObjectId("4e27baae7ff2440ba274d769"), "id" : 2 } { "_id" : ObjectId("4e27baae7ff2440ba274d76a"), "id" : 3 } { "_id" : ObjectId("4e27baae7ff2440ba274d76b"), "id" : 4 } { "_id" : ObjectId("4e27baae7ff2440ba274d76c"), "id" : 5 } { "_id" : ObjectId("4e27baae7ff2440ba274d76d"), "id" : 6 } { "_id" : ObjectId("4e27baae7ff2440ba274d76e"), "id" : 7 } { "_id" : ObjectId("4e27baae7ff2440ba274d76f"), "id" : 8 } { "_id" : ObjectId("4e27baae7ff2440ba274d770"), "id" : 9 } { "_id" : ObjectId("4e27bf5c9033de6afd328581"), "id" : 10 } { "_id" : ObjectId("4e27bfe99033de6afd328582"), "id" : 11 }

需要注意:兩次鎖定時第二次會等待第一次鎖釋放,鎖定的時候當第一次有寫操作時在沒有解鎖前所有的操作都不能進行。

5:備份與恢復

(完成person從27020備份然后還原到27017)

備份

E:\mongodb\bin>mongodump -h 10.53.139.138:27020 -d person2 -o E:\mongodb\bin\back connected to: 10.53.139.138:27020 DATABASE: person2 to E:/mongodb/bin/back/person2 person2.person to E:/mongodb/bin/back/person2/person.bson 10 objects person2.system.indexes to E:/mongodb/bin/back/person2/system.indexes.bson 1 objects

恢復

E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) blog (empty) local (empty) person 0.03125GB person1 0.03125GB persons (empty) > exit bye E:\mongodb\bin>mongorestore -h 10.53.139.138:27017 --directoryperdb E:\mongodb\b in\back\person2 connected to: 10.53.139.138:27017 Thu Jul 21 14:36:10 E:/mongodb/bin/back/person2/person.bson Thu Jul 21 14:36:10 going into namespace [person2.person] Thu Jul 21 14:36:10 10 objects found Thu Jul 21 14:36:10 E:/mongodb/bin/back/person2/system.indexes.bson Thu Jul 21 14:36:10 going into namespace [person2.system.indexes] Thu Jul 21 14:36:10 { name: "_id_", ns: "person2.person", key: { _id: 1 }, v: 0 } Thu Jul 21 14:36:10 1 objects found E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) blog (empty) local (empty) person 0.03125GB person1 0.03125GB person2 0.03125GB persons (empty)

公共參數:
--port arg??? 指定端口
-h arg??? 指定主機
-d arg??? 指定database
-c arg??? 指定collection
--dbpath arg??? 指定mongod的數據庫文件所在路徑

備份:
bsondump
命令用法:bsondump [options] <bson fileName>
特別參數:
--type arg 輸出文件的格式,arg= json,debug在xp下不能用,沒測試

mongodump
命令用法:mongodump [options]
特別參數:
-o arg 輸出的"目錄",不指定時,默認在執行命令的路徑下創建dump目錄導出
-q arg json query,此處可通過json查詢,有選擇性的導出數據
說明:
1.與mongorestore構成一對工具集,即由Mongodump導出的數據可由mongrestore恢復
2.mongodump可用于“熱備份”
3.導出的數據是bson格式
性能:數據庫中1g的數據導出后變成285M,大概8秒

備注 1. mogodump / mongorestore 這2命令將mongodb的數據dump為BSON格式,需要的時候可以恢復。 這種方式作為小的數據庫還適用。但如果是sharding或者幾百G數據以上的話 就幾乎不可用了。因為BSON及其占用空間。 特別注意的是備份前執行db.runCommand({fsync : 1})將內存中的數據刷到文件中。 2. Slave Replication 這是最適合和可靠的,適合生產環境。MongoDb支持master+多個slave。因此可以很方便的起一個slave來進行備份。 但是需要注意的是如果數據量很大的話,如果是新建的slave,速度又沒有保證的話,一定要調高 oplogSize 的大小,對于一個300G的數據庫, 可以調到60G以上。這樣避免同步到中間出現oplogSize不足等異常。 3. 關于增量熱備份 對于某些熱衷單獨文件備份的同志,也可以考慮使用“增量熱”備份的方式作為最后的屏障。 做法就是,最開始將某個slave暫時shutdown,然后將數據庫文件復制到另一個目錄作為增量備份的起點。 每次備份的時候,在這個目錄上起一個slave, 使用–fastsync參數,同步完畢即可tar這個目錄就可以了。 這種方式的一個缺點就是如果備份周期的過長的話,空間浪費會非常大,尤其是頻繁刪除的情況下, 目前1.6以前的版本對于刪除的空間回收機制有bug。這個問題應該在1.6版本發布時候解決。 要想回收這些空間需要repairDatabase,速度比較慢,不如直接從頭clone一個新的db了。(其實Repair的過程也就是先clone然后copy回來)。 綜上所述, 最靠譜和安全的備份方式就是用mongodb自身的同步復制機制. 最經典也最小的生產環境是: 1 master + 2 slaves

6:導入與導出

導出(文件要預先建立)

E:\mongodb\bin>mongoexport -h 10.53.139.138 -d person -c person -o E:\mongodb\bin\aa.bson connected to: 10.53.139.138 exported 14 records

導入

E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) blog (empty) local (empty) person 0.03125GB person1 0.03125GB person2 0.03125GB persons (empty) > exit bye E:\mongodb\bin>mongoimport -h 10.53.139.138 --port 27017 -d person3 -c person -- file E:\mongodb\bin\aa.bson connected to: 10.53.139.138:27017 imported 14 objects E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) blog (empty) local (empty) person 0.03125GB person1 0.03125GB person2 0.03125GB person3 0.03125GB persons (empty)

7:操作

插入

E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) local (empty) test (empty) > use company switched to db company > u={name:"dabing",id:1} { "name" : "dabing", "id" : 1 } > db.person.insert(u) > db.person.find() { "_id" : ObjectId("4e27d1edb449d8dc5d763a57"), "name" : "dabing", "id" : 1 } > u.id+=1 2 > db.person.save(u) > db.person.find() { "_id" : ObjectId("4e27d1edb449d8dc5d763a57"), "name" : "dabing", "id" : 1 } { "_id" : ObjectId("4e27d228b449d8dc5d763a58"), "name" : "dabing", "id" : 2 } > u=db.person.findOne({id:1}) { "_id" : ObjectId("4e27d1edb449d8dc5d763a57"), "name" : "dabing", "id" : 1 } > u.id+=2 3 > db.person.save(u) > db.person.find() { "_id" : ObjectId("4e27d1edb449d8dc5d763a57"), "name" : "dabing", "id" : 3 } { "_id" : ObjectId("4e27d228b449d8dc5d763a58"), "name" : "dabing", "id" : 2 }

save() 可插入新文檔,也可以更新(update)一個已有的文檔

查詢函數式有 find() 和 findOne(),前者返回一個迭代器 cursor,后者返回單個文檔

查詢

E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) local (empty) test (empty) > show dbs admin (empty) local (empty) test (empty) > use company switched to db company > for (var i = 0; i < 10; i++) db.users.insert({name:"user" + i, age:20 + i, sex:i % 2}) > db.users.find({name:"user1"}) //select * from users where name = 'user1' { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } > db.users.find({name:"user1",age:1}) > db.users.find({name:"user1",age:21}) //select * from users where name = 'user1' and age = 21 { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } > db.users.find({name:"user1",age:21},{name:1}) { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1" } > db.users.find({name:"user1",age:21},{name:1,age:1}) //select name,age from users where name = 'user1' and age = 21 { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21 } > db.users.find().sort({age:1}) //select * from users order by age asc { "_id" : ObjectId("4e27d3e2b449d8dc5d763a59"), "name" : "user0", "age" : 20, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5b"), "name" : "user2", "age" : 22, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5d"), "name" : "user4", "age" : 24, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5f"), "name" : "user6", "age" : 26, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a60"), "name" : "user7", "age" : 27, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a61"), "name" : "user8", "age" : 28, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a62"), "name" : "user9", "age" : 29, "sex" : 1 } > db.users.find().sort({age:-1})//select * from users order by age desc { "_id" : ObjectId("4e27d3e2b449d8dc5d763a62"), "name" : "user9", "age" : 29, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a61"), "name" : "user8", "age" : 28, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a60"), "name" : "user7", "age" : 27, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5f"), "name" : "user6", "age" : 26, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5d"), "name" : "user4", "age" : 24, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5b"), "name" : "user2", "age" : 22, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a59"), "name" : "user0", "age" : 20, "sex" : 0 } > db.users.find().sort({sex:-1,age:-1}) //select * from users order by sex asce, age desc { "_id" : ObjectId("4e27d3e2b449d8dc5d763a62"), "name" : "user9", "age" : 29, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a60"), "name" : "user7", "age" : 27, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a61"), "name" : "user8", "age" : 28, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5f"), "name" : "user6", "age" : 26, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5d"), "name" : "user4", "age" : 24, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5b"), "name" : "user2", "age" : 22, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a59"), "name" : "user0", "age" : 20, "sex" : 0 } > db.users.find().sort({sex:-1,age:-1}).skip(2).limit(3)//select * from users skip 2 limit 3 { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } > db.users.find({sex:1, age:{$gt:23, $lt:28}})//select * from users where sex = 1 and age > 23 and age < 28 { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a60"), "name" : "user7", "age" : 27, "sex" : 1 } 比較操作包括:$gt (>)、$lt (<)、$gte (>=)、$lte(<=)、$ne (!=) > db.users.find({age:{$in:[23,26,32]}}) //select * from users where age in (23, 26, 32) { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5f"), "name" : "user6", "age" : 26, "sex" : 0 } 對應的操作符有 $nin (not in) > db.users.find({age:{$gt:20}}).count()//select count(*) from users where age > 20 9 > db.users.find({$or:[{age:25}, {age:28}]})//select * from users where age = 25 or age = 28 { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a61"), "name" : "user8", "age" : 28, "sex" : 0 } > db.users.find({$or:[{age:{$lte:23}}, {age:{$gte:33}}]})//select * from users where age <= 23 or age >= 33 { "_id" : ObjectId("4e27d3e2b449d8dc5d763a59"), "name" : "user0", "age" : 20, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 21, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5b"), "name" : "user2", "age" : 22, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 }

更新

E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > show dbs admin (empty) company 0.03125GB local (empty) test (empty) > db.users.find({name:"user1"}) { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 100, "sex" : 0 } //db.collection.update(criteria, objNew, upsert, mult) //criteria: 需要被更新的條件表達式 //objNew: 更新表達式 //upsert: 如目標記錄不存在,是否插入新文檔。 //multi: 是否更新多個文檔。 > db.users.update({name:"user1"}, {$set:{age:101, sex:0}})//update users set age = 101, sex = 0 where name = 'user1' > db.users.find({name:"user1"}) { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 101, "sex" : 0 } > db.users.update({name:"user1"}, {$inc:{age:10}}, false, true)//update users set age = age + 10 where name = 'user1' > db.users.find({name:"user1"}) { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 111, "sex" : 0 } > db.users.update({name:"user1"}, {$inc:{age:10}, $set:{sex:1}})//update users set age = age + 10, sex = 1 where name = 'user1' > db.users.find({name:"user1"}) { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 121, "sex" : 1 }

刪除

> db.users.find() { "_id" : ObjectId("4e27d3e2b449d8dc5d763a59"), "name" : "user0", "age" : 20, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 121, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5b"), "name" : "user2", "age" : 22, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5c"), "name" : "user3", "age" : 23, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5d"), "name" : "user4", "age" : 24, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5f"), "name" : "user6", "age" : 26, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a60"), "name" : "user7", "age" : 27, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a61"), "name" : "user8", "age" : 28, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a62"), "name" : "user9", "age" : 29, "sex" : 1 } > db.users.remove({name:"user3"}) > db.users.find() { "_id" : ObjectId("4e27d3e2b449d8dc5d763a59"), "name" : "user0", "age" : 20, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5a"), "name" : "user1", "age" : 121, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5b"), "name" : "user2", "age" : 22, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5d"), "name" : "user4", "age" : 24, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5e"), "name" : "user5", "age" : 25, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a5f"), "name" : "user6", "age" : 26, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a60"), "name" : "user7", "age" : 27, "sex" : 1 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a61"), "name" : "user8", "age" : 28, "sex" : 0 } { "_id" : ObjectId("4e27d3e2b449d8dc5d763a62"), "name" : "user9", "age" : 29, "sex" : 1 } > db.users.remove() > db.users.find()

MapReduce

E:\mongodb\bin>mongo --port 27017 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:27017/test > use blog switched to db blog >for (var i = 0; i < 1000; i++) { ... var u = { name : "user" + i, age : i % 40 + 1, sex : i % 2 }; ... db.users.insert(u); ... } > db.users.ensureIndex({name:1}) > db.users.ensureIndex({age:1}) //相當于select count(*) value,age from users group by age > m = function() { emit(this.age, 1) } function () { emit(this.age, 1); } > r = function(key, values) { ... ... var x = 0; ... ... values.forEach(function(v) { x += v });//這里可以執行批量更新操作eg ... ... return x; ... ... } ------------------//批量更新例子 r = function(key, values) { ... update = function(v) { ... db.users.update({_id:key}, {$inc:{age:1}}, false, false); ... } ... values.forEach(update); ... return key; ... } mapreduce: 要操作的目標集合。 map: 映射函數 (生成鍵值對序列,作為 reduce 函數參數)。 reduce: 統計函數。 query: 目標記錄過濾。 sort: 目標記錄排序。 limit: 限制目標記錄數量。 out: 統計結果存放集合 (不指定則使用臨時集合,在客戶端斷開后自動刪除)。 keeptemp: 是否保留臨時集合。 finalize: 最終處理函數 (對 reduce 返回結果進行最終整理后存入結果集合)。 scope: 向 map、reduce、finalize 導入外部變量。 verbose: 顯示詳細的時間統計信息。 -------------------- function (key, values) { var x = 0; values.forEach(function (v) {x += v;}); return x; } > res = db.users.mapReduce(m, r,{out:"res"}); { "result" : "res", "timeMillis" : 62, "counts" : { "input" : 1000, "emit" : 1000, "output" : 40 }, "ok" : 1, } > db.res.find() { "_id" : 1, "value" : 25 } { "_id" : 2, "value" : 25 } { "_id" : 3, "value" : 25 } { "_id" : 4, "value" : 25 } { "_id" : 5, "value" : 25 } { "_id" : 6, "value" : 25 } { "_id" : 7, "value" : 25 } { "_id" : 8, "value" : 25 } { "_id" : 9, "value" : 25 } { "_id" : 10, "value" : 25 } { "_id" : 11, "value" : 25 } { "_id" : 12, "value" : 25 } { "_id" : 13, "value" : 25 } { "_id" : 14, "value" : 25 } { "_id" : 15, "value" : 25 } { "_id" : 16, "value" : 25 } { "_id" : 17, "value" : 25 } { "_id" : 18, "value" : 25 } { "_id" : 19, "value" : 25 } { "_id" : 20, "value" : 25 } has more //可以進一步處理 > f = function(key, value) { return {age:key, count:value}; } function (key, value) { return {age:key, count:value}; } //res = db.users.mapReduce(m, r,{out:"res",finalize:f,query:{age:{$lt:10}}, sort:{name:1}, limit:5}}); > res = db.users.mapReduce(m, r,{out:"res",finalize:f}); { "result" : "res", "timeMillis" : 31, "counts" : { "input" : 1000, "emit" : 1000, "output" : 40 }, "ok" : 1, } > db.res.find() { "_id" : 1, "value" : { "age" : 1, "count" : 25 } } { "_id" : 2, "value" : { "age" : 2, "count" : 25 } } { "_id" : 3, "value" : { "age" : 3, "count" : 25 } } { "_id" : 4, "value" : { "age" : 4, "count" : 25 } } { "_id" : 5, "value" : { "age" : 5, "count" : 25 } } { "_id" : 6, "value" : { "age" : 6, "count" : 25 } } { "_id" : 7, "value" : { "age" : 7, "count" : 25 } } { "_id" : 8, "value" : { "age" : 8, "count" : 25 } } { "_id" : 9, "value" : { "age" : 9, "count" : 25 } } { "_id" : 10, "value" : { "age" : 10, "count" : 25 } } { "_id" : 11, "value" : { "age" : 11, "count" : 25 } } { "_id" : 12, "value" : { "age" : 12, "count" : 25 } } { "_id" : 13, "value" : { "age" : 13, "count" : 25 } } { "_id" : 14, "value" : { "age" : 14, "count" : 25 } } { "_id" : 15, "value" : { "age" : 15, "count" : 25 } } { "_id" : 16, "value" : { "age" : 16, "count" : 25 } } { "_id" : 17, "value" : { "age" : 17, "count" : 25 } } { "_id" : 18, "value" : { "age" : 18, "count" : 25 } } { "_id" : 19, "value" : { "age" : 19, "count" : 25 } } { "_id" : 20, "value" : { "age" : 20, "count" : 25 } } has more >

其他操作

> u = db.users.findOne({"im.qq":12345}) { "_id" : ObjectId("4e27dc01df0c628545d11eac"), "name" : "user1", "age" : 15, "address" : [ "address1", "address2" ], "im" : { "msn" : "user1@hotmail.com", "qq" : 12345 } } > u = db.users.find({"im.qq":{$exists:true}}, {"im.qq":1}) //可以通過 $exists 判斷某個字段是否存在 { "_id" : ObjectId("4e27dc01df0c628545d11eac"), "im" : { "qq" : 12345 } } > db.users.insert({name:"user3", data:[1,2,3,4,5,6,7]}) > db.users.insert({name:"user4", data:[1,2,3]}) > db.users.find({data:{$all:[2,3,4]}}) //$all: 判斷數組屬性是否包含全部條件。 { "_id" : ObjectId("4e27dcc1df0c628545d11eae"), "name" : "user3", "data" : [ 1,2, 3, 4, 5, 6, 7 ] } 注意和 $in 的區別。$in 是檢查目標屬性值是條件表達式中的一員,而 $all 則要求屬性值包含全部條件元素。 > db.users.find({data:{$size:3}})//$size: 匹配數組屬性元素數量 { "_id" : ObjectId("4e27dcc6df0c628545d11eaf"), "name" : "user4", "data" : [ 1,2, 3 ] } > db.users.find({data:{$type:1}})//$type: 判斷屬性類型。 { "_id" : ObjectId("4e27dcc1df0c628545d11eae"), "name" : "user3", "data" : [ 1,2, 3, 4, 5, 6, 7 ] } { "_id" : ObjectId("4e27dcc6df0c628545d11eaf"), "name" : "user4", "data" : [ 1,2, 3 ] } double:1 string: 2 object: 3 array: 4 binary data: 5 object id: 7 boolean: 8 date: 9 null: 10 regular expression: 11 javascript code: 13 symbol: 14 javascript code with scope: 15 32-bit integer: 16 timestamp: 17 64-bit integer: 18 min key: 255 max key: 127 > db.users.find({name:/user[135]/i}, {name:1})//使用正則表達式進行查詢。 { "_id" : ObjectId("4e27dcc1df0c628545d11eae"), "name" : "user3" } i: 忽略大小寫。 m: 默認為單行處理,此標記表示多行。 x: 擴展。 > db.users.find({address:"abc"})//數組屬性元素值匹配 { "_id" : ObjectId("4e27de60df0c628545d11eb0"), "name" : "user1", "age" : 15, "address" : [ { "a" : 1 }, { "b" : 1 }, 3, "abc" ] } > db.users.find({address:{$elemMatch:{a:1, b:{$gt:5}}}}) //{data:"abc"} 僅簡單匹配數組屬性是否包含該元素。$elemMatch 則可以處理更復雜的元素查找條件。當然也可以寫成如下方式。{elemMatch沒有找出} //還可以直接使用序號進行操作 > db.users.find({"address.a":1, "address.b":{$gt:5}}) { "_id" : ObjectId("4e27de60df0c628545d11eb0"), "name" : "user1", "age" : 15, "address" : [ { "a" : 1 }, { "b" : 10 }, 3, "abc" ] } > db.users.find({"address.2":3}) { "_id" : ObjectId("4e27de60df0c628545d11eb0"), "name" : "user1", "age" : 15, "address" : [ { "a" : 1 }, { "b" : 10 }, 3, "abc" ] } > db.users.find({name:{$not:/user3/}}, {name:1})//$not: 取反,表示返回條件不成立的文檔。 { "_id" : ObjectId("4e27de60df0c628545d11eb0"), "name" : "user1" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb1"), "name" : "user0" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb2"), "name" : "user1" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb3"), "name" : "user2" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb5"), "name" : "user4" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb6"), "name" : "user5" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb7"), "name" : "user6" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb8"), "name" : "user7" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb9"), "name" : "user8" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eba"), "name" : "user9" } > db.users.find({name:"user1"}) { "_id" : ObjectId("4e27de60df0c628545d11eb0"), "name" : "user1", "age" : 15, "address" : [ { "a" : 1 }, { "b" : 10 }, 3, "abc" ] } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb2"), "name" : "user1", "age" : 21, "sex" : 1 } > db.users.update({name:"user1"}, {$unset:{address:1, im:1}})//$unset: 和 $set 相反,表示移除文檔屬性 > db.users.find({name:"user1"}) { "_id" : ObjectId("4e27de60df0c628545d11eb0"), "age" : 15, "name" : "user1" } { "_id" : ObjectId("4e27e1ebdf0c628545d11eb2"), "name" : "user1", "age" : 21, "sex" : 1 } > u = db.users.find({name:"user2"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb3"), "name" : "user2", "age" : 22, "sex" : 0 } > db.users.update({name:"user2"}, {$push:{data:1}}) //$push: 和 $ pushAll 都是向數組屬性添加元素 > u = db.users.find({name:"user2"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb3"), "age" : 22, "data" : [ 1 ], "name" : "user2", "sex" : 0 } > db.users.update({name:"user2"}, {$pushAll:{data:[2,3,4,5]}}) > u = db.users.find({name:"user2"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb3"), "age" : 22, "data" : [ 1, 2, 3,4, 5 ], "name" : "user2", "sex" : 0 } > u = db.users.find({name:"user3"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb4"), "name" : "user3", "age" : 23, "sex" : 1 } > db.users.update({name:"user3"}, {$addToSet:{data:1}}) // $addToSet: 和 $push 類似,不過僅在該元素不存在時才添加 (Set 表示不重復元素集合) > u = db.users.find({name:"user3"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb4"), "age" : 23, "data" : [ 1 ], "name" : "user3", "sex" : 1 } > db.users.update({name:"user3"}, {$addToSet:{data:1}}) > u = db.users.find({name:"user3"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb4"), "age" : 23, "data" : [ 1 ], "name" : "user3", "sex" : 1 } > db.users.update({name:"user3"}, {$push:{data:1}}) > u = db.users.find({name:"user3"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb4"), "age" : 23, "data" : [ 1, 1 ], "name" : "user3", "sex" : 1 } > db.users.update({name:"user4"}, {$addToSet:{data:{$each:[1,2,3,4]}}})//要添加多個元素,使用 $each > u = db.users.find({name:"user4"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb5"), "age" : 24, "data" : [ 1, 2, 3,4 ], "name" : "user4", "sex" : 0 } > db.users.find({name:"user4"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb5"), "age" : 24, "data" : [ 1, 2, 3,4 ], "name" : "user4", "sex" : 0 } > db.users.update({name:"user4"}, {$pop:{data:1}}) //$pop: 移除數組屬性的元素,$pull 按值移除,$pullAll 移除所有符合提交的元素 > db.users.find({name:"user4"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb5"), "age" : 24, "data" : [ 1, 2, 3 ], "name" : "user4", "sex" : 0 } > db.users.update({name:"user4"}, {$pop:{data:-1}}) > db.users.find({name:"user4"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb5"), "age" : 24, "data" : [ 2, 3 ], "name" : "user4", "sex" : 0 } > db.users.update({name:"user4"}, {$pull:{data:2}})//移除全部 2 > db.users.find({name:"user4"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb5"), "age" : 24, "data" : [ 3 ], "name" : "user4", "sex" : 0 } > db.users.find({name:"user2"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb3"), "age" : 22, "data" : [ 1, 2, 3,4, 5 ], "name" : "user2", "sex" : 0 } > db.users.update({name:"user2"}, {$pullAll:{data:[2,3,6]}}) > db.users.find({name:"user2"}) { "_id" : ObjectId("4e27e1ebdf0c628545d11eb3"), "age" : 22, "data" : [ 1, 4, 5 ], "name" : "user2", "sex" : 0 } > db.dropDatabase() { "dropped" : "company", "ok" : 1 } > for (var i = 0; i < 10; i++) db.users.insert({name:"user"+i, age:i}) > db.users.find()//$where: 用 JS 代碼來代替有些丑陋的 $lt、$gt { "_id" : ObjectId("4e27e3b4df0c628545d11ebb"), "name" : "user0", "age" : 0 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebc"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebd"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebe"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebf"), "name" : "user4", "age" : 4 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec0"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec1"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec2"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec3"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec4"), "name" : "user9", "age" : 9 } > db.users.find({$where:"this.age > 7 || this.age < 3"}) { "_id" : ObjectId("4e27e3b4df0c628545d11ebb"), "name" : "user0", "age" : 0 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebc"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebd"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec3"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec4"), "name" : "user9", "age" : 9 } > db.users.find("this.age > 7 || this.age < 3") { "_id" : ObjectId("4e27e3b4df0c628545d11ebb"), "name" : "user0", "age" : 0 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebc"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebd"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec3"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec4"), "name" : "user9", "age" : 9 } > db.users.find({$where: function(){ return this.age > 7 || this.age < 3;}}) { "_id" : ObjectId("4e27e3b4df0c628545d11ebb"), "name" : "user0", "age" : 0 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebc"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("4e27e3b4df0c628545d11ebd"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec3"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("4e27e3b4df0c628545d11ec4"), "name" : "user9", "age" : 9 }

8:索引

> for (var i = 0; i < 30; i++) { ... u = { name : "user" + i, ... age : 20 + i, ... contact : { ... address : ["address1_" + i, "address2_" + i], ... postcode : 100000 + i, ... } ... }; ... db.users.insert(u); ... } //使用 ensureIndex 創建索引,dropIndex() 刪除索引,dropIndexes() 刪除全部索引(不包括 _id 等系統索引)。 > db.users.ensureIndex({name:1}) > db.users.ensureIndex({age:1}) > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 } } { "_id" : ObjectId("4c4a...b798"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1" } { "_id" : ObjectId("4c4a...b799"), "ns" : "blog.users", "key" : { "age" : 1 }, "name" : "age_1" } > db.users.dropIndex({age:1}) { "nIndexesWas" : 3, "ok" : true } > db.users.dropIndexes() { "nIndexesWas" : 2, "msg" : "non-_id indexes dropped for collection", "ok" : true } > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 } } //reIndex 則是重建索引 > db.users.ensureIndex({name:1}) > db.users.ensureIndex({age:1}) > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 } } { "_id" : ObjectId("4c4a...b82a"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1" } { "_id" : ObjectId("4c4a...b82b"), "ns" : "blog.users", "key" : { "age" : 1 }, "name" : "age_1" } > db.users.reIndex() { "nIndexesWas" : 3, "msg" : "indexes dropped for collection", "ok" : 1, "nIndexes" : 3, "indexes" : [ { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 } }, { "_id" : ObjectId("4c4a...b82a"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1" }, { "_id" : ObjectId("4c4a...b82b"), "ns" : "blog.users", "key" : { "age" : 1 }, "name" : "age_1" } ], "ok" : 1 } > db.users.dropIndexes() { "nIndexesWas" : 3, "msg" : "non-_id indexes dropped for collection", "ok" : true } //當系統已有大量數據時,創建索引就是個非常耗時的活,我們可以在后臺執行。 > db.users.ensureIndex({name:1}, {backgroud:true}) > db.users.reIndex({backgroud:true}) { "nIndexesWas" : 2, "msg" : "indexes dropped for collection", "ok" : 1, "nIndexes" : 2, "indexes" : [ { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 } }, { "_id" : ObjectId("4c4a...b79c"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1", "backgroud" : true } ], "ok" : 1 } //MongoDB 提供了一個 explain 命令讓我們獲知系統如何處理查詢請求。 > db.users.ensureIndex({name:1}) > db.users.ensureIndex({age:1}) > db.users.find({age:{$gt:45}}, {name:1, age:1}) { "_id" : ObjectId("4c4a8edeeb257107735eb826"), "name" : "user26", "age" : 46 } { "_id" : ObjectId("4c4a8edeeb257107735eb827"), "name" : "user27", "age" : 47 } { "_id" : ObjectId("4c4a8edeeb257107735eb828"), "name" : "user28", "age" : 48 } { "_id" : ObjectId("4c4a8edeeb257107735eb829"), "name" : "user29", "age" : 49 } > db.users.find({age:{$gt:45}}, {name:1, age:1}).explain() { "cursor" : "BtreeCursor age_1", "nscanned" : 5, "nscannedObjects" : 4, "n" : 4, "millis" : 0, "indexBounds" : [ [ { "age" : 45 }, { "age" : 1.7976931348623157e+308 } ] ] } cursor: 返回游標類型(BasicCursor 或 BtreeCursor)。 nscanned: 被掃描的文檔數量。 n: 返回的文檔數量。 millis: 耗時(毫秒)。 indexBounds: 所使用的索引。 //我們可以創建深層索引,甚至直接用文檔(sub-document)作為索引鍵。 > db.users.ensureIndex({"contact.postcode":1}) > db.users.find({"contact.postcode":{$lt:100009}}, {name:1, "contact.postcode":1}) { "_id" : ObjectId("4c4a8edeeb257107735eb80c"), "name" : "user0", "contact" : { "postcode" : 100000 } } { "_id" : ObjectId("4c4a8edeeb257107735eb80d"), "name" : "user1", "contact" : { "postcode" : 100001 } } { "_id" : ObjectId("4c4a8edeeb257107735eb80e"), "name" : "user2", "contact" : { "postcode" : 100002 } } { "_id" : ObjectId("4c4a8edeeb257107735eb80f"), "name" : "user3", "contact" : { "postcode" : 100003 } } { "_id" : ObjectId("4c4a8edeeb257107735eb810"), "name" : "user4", "contact" : { "postcode" : 100004 } } { "_id" : ObjectId("4c4a8edeeb257107735eb811"), "name" : "user5", "contact" : { "postcode" : 100005 } } { "_id" : ObjectId("4c4a8edeeb257107735eb812"), "name" : "user6", "contact" : { "postcode" : 100006 } } { "_id" : ObjectId("4c4a8edeeb257107735eb813"), "name" : "user7", "contact" : { "postcode" : 100007 } } { "_id" : ObjectId("4c4a8edeeb257107735eb814"), "name" : "user8", "contact" : { "postcode" : 100008 } } > db.users.find({"contact.postcode":{$lt:100009}}, {name:1, "contact.postcode":1}).explain() { "cursor" : "BtreeCursor contact.postcode_1", "nscanned" : 10, "nscannedObjects" : 9, "n" : 9, "millis" : 0, "indexBounds" : [ [ { "contact.postcode" : -1.7976931348623157e+308 }, { "contact.postcode" : 100009 } ] ] } > db.users.dropIndex({"contact.postcode":1}) { "nIndexesWas" : 4, "ok" : 1 } > db.users.ensureIndex({contact:1}) > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 }, "v" : 0 } { "_id" : ObjectId("4e27eb604855eaada94c711f"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1", "backgroud" : true, "v" : 0 } { "_id" : ObjectId("4e27eb7c4855eaada94c7121"), "ns" : "blog.users", "key" : { "age" : 1 }, "name" : "age_1", "v" : 0 } { "_id" : ObjectId("4e27ebc64855eaada94c7123"), "ns" : "blog.users", "key" : { "contact" : 1 }, "name" : "contact_1", "v" : 0 } > db.users.find({contact:{postcode:{$lt:100009}}}).explain() { "cursor" : "BtreeCursor contact_1", "nscanned" : 0, "nscannedObjects" : 0, "n" : 0, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { "contact" : [ [ { "postcode" : { "$lt" : 100009 } }, { "postcode" : { "$lt" : 100009 } } ] ] } } > db.users.find({"contact.postcode":{$lt:100009}}).explain() { "cursor" : "BasicCursor", "nscanned" : 30, "nscannedObjects" : 30, "n" : 9, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } } > db.users.find({contact:{address:"address2_23"}}).explain() { "cursor" : "BtreeCursor contact_1", "nscanned" : 0, "nscannedObjects" : 0, "n" : 0, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { "contact" : [ [ { "address" : "address2_23" }, { "address" : "address2_23" } ] ] } } > db.users.find({"contact.address":"address2_23"}).explain() { "cursor" : "BasicCursor", "nscanned" : 30, "nscannedObjects" : 30, "n" : 1, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } } //創建復合索引也很簡單 > db.users.ensureIndex({name:1, age:-1}) > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 }, "v" : 0 } { "_id" : ObjectId("4e27eb604855eaada94c711f"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1", "backgroud" : true, "v" : 0 } { "_id" : ObjectId("4e27eb7c4855eaada94c7121"), "ns" : "blog.users", "key" : { "age" : 1 }, "name" : "age_1", "v" : 0 } { "_id" : ObjectId("4e27ebc64855eaada94c7123"), "ns" : "blog.users", "key" : { "contact" : 1 }, "name" : "contact_1", "v" : 0 } { "_id" : ObjectId("4e27ec0a4855eaada94c7124"), "ns" : "blog.users", "key" : { "name" : 1, "age" : -1 }, "name" : "name_1_age_-1", "v" : 0 } > db.users.find({age:{$lt:25}, name:"user2"}, {name:1, age:1}) { "_id" : ObjectId("4e27eac34855eaada94c70fe"), "name" : "user2", "age" : 22 } > db.users.find({age:{$lt:25}, name:"user2"}, {name:1, age:1}).explain() { "cursor" : "BtreeCursor name_1_age_-1", "nscanned" : 1, "nscannedObjects" : 1, "n" : 1, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { "name" : [ [ "user2", "user2" ] ], "age" : [ [ 25, -1.7976931348623157e+308 ] ] } } //復合索引同樣可用于局部屬性的搜索,但必須依照索引字段順序。比如創建索引字段順序 "a,b,c",那么僅對 "a,b,c"、"a,b"、"a" 查詢有效,而對 "b,c" 之類的組合無效。 > db.users.dropIndex({name:1}) { "nIndexesWas" : 5, "ok" : 1 } > db.users.dropIndex({name:1}) { "errmsg" : "index not found", "ok" : 0 } > db.users.dropIndex({age:1}) { "nIndexesWas" : 4, "ok" : 1 } > db.users.dropIndex({contact:1}) { "nIndexesWas" : 3, "ok" : 1 } > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 }, "v" : 0 } { "_id" : ObjectId("4e27ec0a4855eaada94c7124"), "ns" : "blog.users", "key" : { "name" : 1, "age" : -1 }, "name" : "name_1_age_-1", "v" : 0 } > db.users.find({name:"user12"}).explain() { "cursor" : "BtreeCursor name_1_age_-1", "nscanned" : 1, "nscannedObjects" : 1, "n" : 1, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { "name" : [ [ "user12", "user12" ] ], "age" : [ [ { "$maxElement" : 1 }, { "$minElement" : 1 } ] ] } } > db.users.find({age:18}).explain() { "cursor" : "BasicCursor", "nscanned" : 30, "nscannedObjects" : 30, "n" : 0, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } } //只需在 ensureIndex 命令中指定 unique 即可創建唯一索引。 > db.users.ensureIndex({name:1}, {unique:true}) > db.system.indexes.find() { "name" : "_id_", "ns" : "blog.users", "key" : { "_id" : 1 }, "v" : 0 } { "_id" : ObjectId("4e27ec0a4855eaada94c7124"), "ns" : "blog.users", "key" : { "name" : 1, "age" : -1 }, "name" : "name_1_age_-1", "v" : 0 } { "_id" : ObjectId("4e27ec794855eaada94c7125"), "ns" : "blog.users", "key" : { "name" : 1 }, "name" : "name_1", "unique" : true, "v" : 0 } > db.users.insert({name:"user1"}) E11000 duplicate key error index: blog.users.$name_1 dup key: { : "user1" } //如果創建唯一索引前已經有重復文檔,那么可以用 dropDups 刪除多余的數據。 > db.users.dropIndexes() { "nIndexesWas" : 3, "msg" : "non-_id indexes dropped for collection", "ok" : 1 } > db.users.insert({name:"user1"}) > db.users.find({name:"user1"}, {name:1}) { "_id" : ObjectId("4e27eac34855eaada94c70fd"), "name" : "user1" } { "_id" : ObjectId("4e27ec9f4855eaada94c7127"), "name" : "user1" } > db.users.ensureIndex({name:1}, {unique:true, dropDups:true}) E11000 duplicate key error index: blog.users.$name_1 dup key: { : "user1" } > db.users.find({name:"user1"}, {name:1}) { "_id" : ObjectId("4e27eac34855eaada94c70fd"), "name" : "user1" } //對于數組類型屬性,會自動索引全部數組元素 > db.users.dropIndexes() { "nIndexesWas" : 2, "msg" : "non-_id indexes dropped for collection", "ok" : 1 } > db.users.ensureIndex({"contact.address":1}) > db.users.find({"contact.address":"address2_13"}).explain() { "cursor" : "BtreeCursor contact.address_1", "nscanned" : 1, "nscannedObjects" : 1, "n" : 1, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : true, "indexOnly" : false, "indexBounds" : { "contact.address" : [ [ "address2_13", "address2_13" ] ] } } //hint 命令可以強制使用某個索引 > db.users.dropIndexes() { "nIndexesWas" : 2, "msg" : "non-_id indexes dropped for collection", "ok" : 1 } > db.users.ensureIndex({name:1, age:1}) > db.users.find({age:{$lt:30}}).explain() { "cursor" : "BasicCursor", "nscanned" : 30, "nscannedObjects" : 30, "n" : 10, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } } > db.users.find({age:{$lt:30}}).hint({name:1, age:1}).explain() { "cursor" : "BtreeCursor name_1_age_1", "nscanned" : 30, "nscannedObjects" : 10, "n" : 10, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { "name" : [ [ { "$minElement" : 1 }, { "$maxElement" : 1 } ] ], "age" : [ [ -1.7976931348623157e+308, 30 ] ] } } //MongoDB 會將索引數據載入內存,以提高查詢速度。我們可以用 totalIndexSize 獲取全部索引數據大小 > db.users.totalIndexSize() 16384

9:優化

//MongoDB 自帶 Profiler,可以非常方便地記錄下所有耗時過長操作,以便于調優。 > db.setProfilingLevel(n) n: 0: Off; 1: Log Slow Operations; 2: Log All Operations. 通常我們只關心 Slow Operation,Level 1 默認記錄 >100ms 的操作,當然我們也可以自己調整 "db.setProfilingLevel(2, 300)"。 Profiler 信息保存在 system.profile (Capped Collection) 中。 > db.setProfilingLevel(1) { "was" : 1, "slowms" : 100, "ok" : 1 } > db.users.find().sort({age:-1}).limit(10000) { "_id" : ObjectId("4e27f34e256a7f5699394589"), "name" : "user2583248", "age" :2583268, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394588"), "name" : "user2583247", "age" :2583267, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f5699394587"), "name" : "user2583246", "age" :2583266, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394586"), "name" : "user2583245", "age" :2583265, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f5699394585"), "name" : "user2583244", "age" :2583264, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394584"), "name" : "user2583243", "age" :2583263, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f5699394583"), "name" : "user2583242", "age" :2583262, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394582"), "name" : "user2583241", "age" :2583261, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f5699394581"), "name" : "user2583240", "age" :2583260, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394580"), "name" : "user2583239", "age" :2583259, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f569939457f"), "name" : "user2583238", "age" :2583258, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f569939457e"), "name" : "user2583237", "age" :2583257, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f569939457d"), "name" : "user2583236", "age" :2583256, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f569939457c"), "name" : "user2583235", "age" :2583255, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f569939457b"), "name" : "user2583234", "age" :2583254, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f569939457a"), "name" : "user2583233", "age" :2583253, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f5699394579"), "name" : "user2583232", "age" :2583252, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394578"), "name" : "user2583231", "age" :2583251, "sex" : 1 } { "_id" : ObjectId("4e27f34e256a7f5699394577"), "name" : "user2583230", "age" :2583250, "sex" : 0 } { "_id" : ObjectId("4e27f34e256a7f5699394576"), "name" : "user2583229", "age" :2583249, "sex" : 1 } has more > db.system.profile.find() { "ts" : ISODate("2011-07-21T09:36:42.515Z"), "info" : "insert blog.users 140ms", "millis" : 140 } { "ts" : ISODate("2011-07-21T09:38:54.198Z"), "info" : "query blog.users ntoreturn:10000 scanAndOrder reslen:700036 nscanned:2593249 \nquery: { query: {}, orderby: { age: -1.0 } } nreturned:10000 11781ms", "millis" : 11781 } ------------- ts: 操作執行時間。 info: 操作詳細信息。 info.query: 查詢目標(數據庫.集合)。 info.ntoreturn: 客戶端期望返回的文檔數量。 info.nscanned: 服務器實際掃描的文檔數量。 info.reslen: 查詢結果字節長度。 info.nreturnned: 查詢返回文檔數。 millis: 操作耗時(毫秒)。 備注 如果 nscanned 遠大于 nreturned,那么需要使用索引。 如果 reslen 返回字節非常大,那么考慮只獲取所需的字段。 執行 update 操作時同樣檢查一下 nscanned,并使用索引減少文檔掃描數量。 使用 db.eval() 在服務端執行某些統計操作。 減少返回文檔數量,使用 skip & limit 分頁。 ----------- > db.users.find().sort({age:-1}).limit(10000).explain() { "cursor" : "BasicCursor", "nscanned" : 2593249, "nscannedObjects" : 2593249, "n" : 10000, "scanAndOrder" : true, "millis" : 11781, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } } >

10:Master-Slaver

單Master

配置 mongod --logpath E:\mongodb\shard\master\db\log.txt --port 10001 --dbpath E:\mongodb\shard\master\db --master mongod --logpath E:\mongodb\shard\slave\db\log.txt --port 10002 --dbpath E:\mongodb\shard\slave\db -slave --source 10.53.139.138:10001 --autoresync //autoresync 參數會在系統發生意外情況造成主從數據不同步時,自動啟動復制操作 (同步復制 10 分鐘內僅執行一次)。除此之外,還可以用 --slavedelay 設定更新頻率(秒)。 Master E:\mongodb\shard\master>mongo --port 10001 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10001/test > db.isMaster() { "ismaster" : true, "maxBsonObjectSize" : 16777216, "ok" : 1 } > db.printReplicationInfo() configured oplog size: 47.6837158203125MB log length start to end: 74secs (0.02hrs) oplog first event time: Fri Jul 22 2011 14:30:32 GMT+0800 oplog last event time: Fri Jul 22 2011 14:31:46 GMT+0800 now: Fri Jul 22 2011 14:31:49 GMT+0800 > use blog switched to db blog > db.users.insert({name:"user", age:20, sex:1}) > db.users.find() { "_id" : ObjectId("4e291b52e742b344d4d84ead"), "name" : "user", "age" : 20, "sex" : 1 } Slaver E:\mongodb\shard\master>mongo --port 10002 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10002/test > db.isMaster() { "ismaster" : false, "maxBsonObjectSize" : 16777216, "ok" : 1 } > db.printSlaveReplicationInfo() source: 10.53.139.138:10001 syncedTo: Fri Jul 22 2011 14:32:16 GMT+0800 = 16secs ago (0hrs) > use local switched to db local > db.sources.find() { "_id" : ObjectId("4e29192760dea574d7e171ae"), "host" : "10.53.139.138:10001", "source" : "main", "syncedTo" : { "t" : 1311316386000, "i" : 1 }, "localLogTs" : { "t" : 0, "i" : 0 } } > use blog switched to db blog > db.users.find() { "_id" : ObjectId("4e291b52e742b344d4d84ead"), "name" : "user", "age" : 20, "sex" : 1 } > db.users.insert({name:"user1", age:21, sex:0}) not master

多Master

配置 mongod --logpath E:\mongodb\shard\master\db\log.txt --port 10001 --dbpath E:\mongodb\shard\master\db --master mongod --logpath E:\mongodb\shard\master1\db\log.txt --port 10002 --dbpath E:\mongodb\shard\master1\db --master mongod --logpath E:\mongodb\shard\slave\db\log.txt --port 10003 --dbpath E:\mongodb\shard\slave\db -slave 連接slaver添加主服務器 E:\mongodb\shard\slave>mongo --port 10003 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10003/test > use local switched to db local > db.sources.insert({host:"10.53.139.138:10001"}) > db.sources.insert({host:"10.53.139.138:10002"}) > db.printSlaveReplicationInfo() source: 10.53.139.138:10001 doing initial sync source: 10.53.139.138:10002 doing initial sync master1添加數據 E:\mongodb\shard\slave>mongo --port 10001 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10001/test > use db1 switched to db db1 > db.users.insert({name:"user1"}) > db.users.find() { "_id" : ObjectId("4e291eaa8abc2b0f77aade99"), "name" : "user1" } master2添加 E:\mongodb\shard\slave>mongo --port 10002 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10002/test > use db2 switched to db db2 > db.users.insert({name:"user2"}) > db.users.find() { "_id" : ObjectId("4e291ee418179745d0094f33"), "name" : "user2" } 連接slaver E:\mongodb\shard\slave>mongo --port 10003 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10003/test > use db1 switched to db db1 > db.users.find() { "_id" : ObjectId("4e291eaa8abc2b0f77aade99"), "name" : "user1" } > use db2 switched to db db2 > db.users.find() { "_id" : ObjectId("4e291ee418179745d0094f33"), "name" : "user2" }

11:Shard

shard0:mongod --shardsvr --port 27020 --dbpath E:\mongodb\shard\shard1\db\ shard1:mongod --shardsvr --dbpath E:\mongodb\shard\shard2\db\ --port 27021 config:mongod --configsvr --dbpath E:\mongodb\shard\Config\db\ --port 27022 連接config下 mongos --configdb 10.53.139.138:27022 mongo --port 27017 use admin db.runCommand({addshard:"10.53.139.138:27020",name:"shard0"}) db.runCommand({addshard:"10.53.139.138:27021",name:"shard1"}) db.runCommand({listshards:1}) db.runCommand({enablesharding:"test"}) db.runCommand({shardcollection:"test.people",key:{id:1}}) use test show collections db.people.stats() for (var i = 1; i <= 200003; i++) db.people.save({id:i,value1:"1234567890",value2:"1234567890",value3:"1234567890",value4:"1234567890"})

12:故障轉移(Replication)

配置set1 mongod --shardsvr --logpath E:\mongodb\shard\shard1\1\log.txt --dbpath E:\mongodb\shard\shard1\1\db --port 10001 --nohttpinterface --replSet set1 mongod --shardsvr --logpath E:\mongodb\shard\shard1\2\log.txt --dbpath E:\mongodb\shard\shard1\2\db --port 10002 --nohttpinterface --replSet set1 mongod --shardsvr --logpath E:\mongodb\shard\shard1\3\log.txt --dbpath E:\mongodb\shard\shard1\3\db --port 10003 --nohttpinterface --replSet set1 E:\mongodb\shard\shard1\1>mongo --port 10001 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10001/test >cfg = { _id: "set1", members: [ ... { _id:0, host:"10.53.139.138:10001" }, ... { _id:1, host:"10.53.139.138:10002" }, ... { _id:2, host:"10.53.139.138:10003" } ... ]} > rs.initiate(cfg) { "info" : "Config now saved locally. Should come online in about a minute.", "ok" : 1 } > rs.conf() { "_id" : "set1", "version" : 1, "members" : [ { "_id" : 0, "host" : "localhost:27017" }, { "_id" : 1, "host" : "localhost:27018" }, { "_id" : 2, "host" : "localhost:27019" } ] } > rs.status() { "set" : "set1", "date" : "Sat Aug 21 2010 15:21:13 GMT+0800 (CST)", "myState" : 2, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10001", "health" : 1, "state" : 2, "stateStr" : "PRIMARY", "uptime" : 363, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:00:56Z") }, { "_id" : 1, "name" : "10.53.139.138:10002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "self" : true }, { "_id" : 2, "name" : "10.53.139.138:10003", "health" : 1, "state" : 1, "stateStr" : "SECONDARY", "uptime" : 802, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:00:57Z") } ], "ok" : 1 } //暫停10001 set1:SECONDARY> rs.status() { "set" : "set1", "date" : ISODate("2011-07-22T06:01:11Z"), "myState" : 2, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10001", "health" : 0, "state" : 1, "uptime" : 0, "lastHeartbeat" : "Sat Aug 21 2010 15:40:14 GMT+0800 (CST)", "errmsg" : "connect/transport error" }, { "_id" : 1, "name" : "10.53.139.138:10002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "self" : true }, { "_id" : 2, "name" : "10.53.139.138:10003", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 816, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:01:11Z") } ], "ok" : 1 } //開啟10001 set1:SECONDARY> rs.status() { "set" : "set1", "date" : ISODate("2011-07-22T06:01:43Z"), "myState" : 2, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10001", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 409, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:01:42Z") }, { "_id" : 1, "name" : "10.53.139.138:10002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "self" : true }, { "_id" : 2, "name" : "10.53.139.138:10003", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 848, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:01:43Z") } ], "ok" : 1 } set1:SECONDARY> exit bye //準備10004 E:\mongodb\shard\shard1\1>mongo --port 10001 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10001/test set1:SECONDARY> rs.status() { "set" : "set1", "date" : ISODate("2011-07-22T06:02:26Z"), "myState" : 2, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10001", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "self" : true }, { "_id" : 1, "name" : "10.53.139.138:10002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 454, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:02:24Z") }, { "_id" : 2, "name" : "10.53.139.138:10003", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 454, "optime" : { "t" : 1311313830000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T05:50:30Z"), "lastHeartbeat" : ISODate("2011-07-22T06:02:24Z") } ], "ok" : 1 } //非PRIMARY不能動態添加節點 set1:SECONDARY> rs.add("10.53.139.138:10004") { "errmsg" : "replSetReconfig command must be sent to the current replica set primary.", "ok" : 0 } set1:SECONDARY> exit bye E:\mongodb\shard\shard1\1>mongo --port 10003 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10003/test set1:PRIMARY> rs.add("10.53.139.138:10004") Fri Jul 22 14:03:24 DBClientCursor::init call() failed Fri Jul 22 14:03:24 query failed : admin.$cmd { replSetReconfig: { _id: "set1",version: 2, members: [ { _id: 0, host: "10.53.139.138:10001" }, { _id: 1, host: "10.53.139.138:10002" }, { _id: 2, host: "10.53.139.138:10003" }, { _id: 3.0, host: "10.53.139.138:10004" } ] } } to: 127.0.0.1:10003 shell got exception during reconfig: Error: error doing query: failed in some circumstances, the primary steps down and closes connections on a reconf ig null Fri Jul 22 14:03:24 trying reconnect to 127.0.0.1:10003 Fri Jul 22 14:03:24 reconnect 127.0.0.1:10003 ok set1:PRIMARY> rs.status() { "set" : "set1", "date" : ISODate("2011-07-22T06:03:50Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10001", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 24, "optime" : { "t" : 1311314604000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T06:03:24Z"), "lastHeartbeat" : ISODate("2011-07-22T06:03:48Z") }, { "_id" : 1, "name" : "10.53.139.138:10002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 24, "optime" : { "t" : 1311314604000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T06:03:24Z"), "lastHeartbeat" : ISODate("2011-07-22T06:03:48Z") }, { "_id" : 2, "name" : "10.53.139.138:10003", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "optime" : { "t" : 1311314604000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T06:03:24Z"), "self" : true }, { "_id" : 3, "name" : "10.53.139.138:10004", "health" : 1, "state" : 3, "stateStr" : "RECOVERING", //新增加的節點 正在恢復數據 完成后為 SECONDARY "uptime" : 20, "optime" : { "t" : 1311314604000, "i" : 1 }, "optimeDate" : ISODate("2011-07-22T06:03:24Z"), "lastHeartbeat" : ISODate("2011-07-22T06:03:48Z"), "errmsg" : "initial sync done" } ], "ok" : 1 } set1:PRIMARY> exit bye //連接新加入的10004 E:\mongodb\shard\shard1\1>mongo --port 10004 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10004/test set1:SECONDARY> db.users.find() error: { "$err" : "not master and slaveok=false", "code" : 13435 } set1:SECONDARY>

13:集群方案

Set1 mongod --shardsvr --logpath E:\mongodb\shard\shard1\1\log.txt --dbpath E:\mongodb\shard\shard1\1\db --port 10001 --nohttpinterface --replSet set1 mongod --shardsvr --logpath E:\mongodb\shard\shard1\2\log.txt --dbpath E:\mongodb\shard\shard1\2\db --port 10002 --nohttpinterface --replSet set1 mongod --shardsvr --logpath E:\mongodb\shard\shard1\3\log.txt --dbpath E:\mongodb\shard\shard1\3\db --port 10003 --nohttpinterface --replSet set1 配置 E:\mongodb\shard\shard1\1>mongo --port 10001 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10001/test > cfg = { _id:'set1', members:[ ... ... { _id:0, host:'10.53.139.138:10001' }, ... ... { _id:1, host:'10.53.139.138:10002' }, ... ... { _id:2, host:'10.53.139.138:10003' } ... ... ]}; { "_id" : "set1", "members" : [ { "_id" : 0, "host" : "10.53.139.138:10001" }, { "_id" : 1, "host" : "10.53.139.138:10002" }, { "_id" : 2, "host" : "10.53.139.138:10003" } ] } > rs.initiate(cfg) { "info" : "Config now saved locally. Should come online in about a minut e.", "ok" : 1 } > rs.status() { "set" : "set1", "date" : ISODate("2011-07-21T10:14:08Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10001", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "optime" : { "t" : 1311243232000, "i" : 1 }, "optimeDate" : ISODate("2011-07-21T10:13:52Z"), "self" : true }, { "_id" : 1, "name" : "10.53.139.138:10002", "health" : 0, "state" : 6, "stateStr" : "(not reachable/healthy)", "uptime" : 0, "optime" : { "t" : 0, "i" : 0 }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2011-07-21T10:14:07Z"), "errmsg" : "still initializing" }, { "_id" : 2, "name" : "10.53.139.138:10003", "health" : 1, "state" : 3, "stateStr" : "RECOVERING", "uptime" : 5, "optime" : { "t" : 0, "i" : 0 }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2011-07-21T10:14:07Z"), "errmsg" : "initial sync need a member to be primary or secondary to do our initial sync" } ], "ok" : 1 } set1:PRIMARY> exit bye set2 mongod --shardsvr --logpath E:\mongodb\shard\shard2\1\log.txt --dbpath E:\mongodb\shard\shard2\1\db --port 10011 --nohttpinterface --replSet set2 mongod --shardsvr --logpath E:\mongodb\shard\shard2\2\log.txt --dbpath E:\mongodb\shard\shard2\2\db --port 10012 --nohttpinterface --replSet set2 mongod --shardsvr --logpath E:\mongodb\shard\shard2\3\log.txt --dbpath E:\mongodb\shard\shard2\3\db --port 10013 --nohttpinterface --replSet set2 配置set2 E:\mongodb\shard\shard2\1>mongo --port 10011 MongoDB shell version: 1.8.2 connecting to: 127.0.0.1:10011/test > cfg = { _id:'set1', members:[ ... ... { _id:0, host:'10.53.139.138:10011' }, ... ... { _id:1, host:'10.53.139.138:10012' }, ... ... { _id:2, host:'10.53.139.138:10013' } ... ... ]}; { "_id" : "set1", "members" : [ { "_id" : 0, "host" : "10.53.139.138:10011" }, { "_id" : 1, "host" : "10.53.139.138:10012" }, { "_id" : 2, "host" : "10.53.139.138:10013" } ] } > cfg = { _id:'set2', members:[ ... ... { _id:0, host:'10.53.139.138:10011' }, ... ... { _id:1, host:'10.53.139.138:10012' }, ... ... { _id:2, host:'10.53.139.138:10013' } ... ... ]}; { "_id" : "set2", "members" : [ { "_id" : 0, "host" : "10.53.139.138:10011" }, { "_id" : 1, "host" : "10.53.139.138:10012" }, { "_id" : 2, "host" : "10.53.139.138:10013" } ] } > rs.initiate(cfg) { "info" : "Config now saved locally. Should come online in about a minut e.", "ok" : 1 } > rs.status() { "set" : "set2", "date" : ISODate("2011-07-21T10:19:33Z"), "myState" : 2, "members" : [ { "_id" : 0, "name" : "10.53.139.138:10011", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "optime" : { "t" : 1311243565000, "i" : 1 }, "optimeDate" : ISODate("2011-07-21T10:19:25Z"), "self" : true }, { "_id" : 1, "name" : "10.53.139.138:10012", "health" : 0, "state" : 6, "stateStr" : "(not reachable/healthy)", "uptime" : 0, "optime" : { "t" : 0, "i" : 0 }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2011-07-21T10:19:32Z"), "errmsg" : "still initializing" }, { "_id" : 2, "name" : "10.53.139.138:10013", "health" : 0, "state" : 6, "stateStr" : "(not reachable/healthy)", "uptime" : 0, "optime" : { "t" : 0, "i" : 0 }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2011-07-21T10:19:32Z"), "errmsg" : "still initializing" } ], "ok" : 1 } set2:SECONDARY> exit bye 配置configserver mongod --configsvr --logpath E:\mongodb\shard\Config\1\log.txt --dbpath E:\mongodb\shard\Config\1\db --port 20000 --nohttpinterface mongod --configsvr --logpath E:\mongodb\shard\Config\2\log.txt --dbpath E:\mongodb\shard\Config\2\db --port 20001 --nohttpinterface mongod --configsvr --logpath E:\mongodb\shard\Config\3\log.txt --dbpath E:\mongodb\shard\Config\3\db --port 20002 --nohttpinterface 啟動routserver mongos --logpath E:\mongodb\shard\rout\log.txt --configdb 10.53.139.138:20000,10.53.139.138:20001,10.53.139.138:20002 配置分片 E:\mongodb\shard\shard2\1>cd E:\mongodb\shard\rout E:\mongodb\shard\rout>mongo MongoDB shell version: 1.8.2 connecting to: test > use admin switched to db admin > db.runCommand({ addshard:'set1/10.53.139.138:10001,10.53.139.138:10002,10.53.1 39.138:10003' }) { "shardAdded" : "set1", "ok" : 1 } > db.runCommand({ addshard:'set2/10.53.139.138:10011,10.53.139.138:10012,10.53.1 39.138:10013' }) { "shardAdded" : "set2", "ok" : 1 } > db.runCommand({ shardcollection:'test.data', key:{_id:1} }) { "ok" : 0, "errmsg" : "sharding not enabled for db" } > db.runCommand({ shardcollection:'test.data', key:{_id:1} }) { "ok" : 0, "errmsg" : "sharding not enabled for db" } > db.runCommand({ listshards:1 }) { "shards" : [ { "_id" : "set1", "host" : "set1/10.53.139.138:10001,10.53.139.138:10002,1 0.53.139.138:10003" }, { "_id" : "set2", "host" : "set2/10.53.139.138:10011,10.53.139.138:10012,1 0.53.139.138:10013" } ], "ok" : 1 } > printShardingStatus() --- Sharding Status --- sharding version: { "_id" : 1, "version" : 3 } shards: { "_id" : "set1", "host" : "set1/10.53.139.138:10001,10.53.139.138:10002,10.53.139.138:100 03" } { "_id" : "set2", "host" : "set2/10.53.139.138:10011,10.53.139.138:10012,10.53.139.138:100 13" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test", "partitioned" : false, "primary" : "set1" } 簡單測試 > use test switched to db test > db.data.insert({name:1}) > db.data.insert({name:2}) > db.data.insert({name:3}) > db.data.find() { "_id" : ObjectId("4e28015cbb9f26c67deacec6"), "name" : 1 } { "_id" : ObjectId("4e28015ebb9f26c67deacec7"), "name" : 2 } { "_id" : ObjectId("4e280160bb9f26c67deacec8"), "name" : 3 } 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的操作MongoDB的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品内射视频免费 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 野狼第一精品社区 | www国产精品内射老师 | 男女超爽视频免费播放 | 大地资源中文第3页 | 久久精品国产大片免费观看 | 国产亚洲精品精品国产亚洲综合 | 国内综合精品午夜久久资源 | 国精产品一区二区三区 | 亚洲爆乳无码专区 | 亚欧洲精品在线视频免费观看 | 少妇人妻大乳在线视频 | 中文字幕av无码一区二区三区电影 | 国产深夜福利视频在线 | 国精产品一品二品国精品69xx | 色妞www精品免费视频 | 亚洲色欲久久久综合网东京热 | 成熟女人特级毛片www免费 | 亚洲一区二区三区 | 亚洲精品久久久久久久久久久 | 国产一区二区三区影院 | 少妇人妻偷人精品无码视频 | 性欧美videos高清精品 | 成人免费视频视频在线观看 免费 | 无码人妻久久一区二区三区不卡 | 色婷婷久久一区二区三区麻豆 | 午夜理论片yy44880影院 | 人人澡人人妻人人爽人人蜜桃 | 给我免费的视频在线观看 | 又大又紧又粉嫩18p少妇 | 99久久婷婷国产综合精品青草免费 | 男女超爽视频免费播放 | 亚洲精品美女久久久久久久 | 人人妻人人澡人人爽人人精品浪潮 | 国产在线aaa片一区二区99 | 131美女爱做视频 | 久久亚洲精品成人无码 | 中文字幕人妻无码一区二区三区 | 日本爽爽爽爽爽爽在线观看免 | 中文字幕无码免费久久99 | 天堂亚洲2017在线观看 | 国产成人无码av片在线观看不卡 | 国内综合精品午夜久久资源 | 亚洲熟妇色xxxxx亚洲 | 成人免费视频在线观看 | 国内精品久久久久久中文字幕 | 日日天干夜夜狠狠爱 | 国产熟妇高潮叫床视频播放 | 国产极品美女高潮无套在线观看 | 国产三级精品三级男人的天堂 | 免费国产黄网站在线观看 | aa片在线观看视频在线播放 | 伊人久久大香线蕉av一区二区 | 久久www免费人成人片 | 亚洲欧美国产精品久久 | 亚洲国产欧美在线成人 | 亚洲成在人网站无码天堂 | 伊人色综合久久天天小片 | 国产舌乚八伦偷品w中 | 欧美人与动性行为视频 | 少妇无码一区二区二三区 | 中文字幕无线码免费人妻 | 东京热男人av天堂 | 亚洲の无码国产の无码步美 | 久久久久久久久888 | 亚洲 欧美 激情 小说 另类 | 暴力强奷在线播放无码 | 色妞www精品免费视频 | 国产精品成人av在线观看 | 色妞www精品免费视频 | 成人av无码一区二区三区 | 精品国产麻豆免费人成网站 | 国产无av码在线观看 | 亚洲国产精品久久久天堂 | 97久久精品无码一区二区 | 中文字幕日产无线码一区 | 成年美女黄网站色大免费全看 | 亚洲国产精品一区二区第一页 | 成熟人妻av无码专区 | 清纯唯美经典一区二区 | а天堂中文在线官网 | 国产亚洲日韩欧美另类第八页 | 少妇无码一区二区二三区 | 一本精品99久久精品77 | 永久免费精品精品永久-夜色 | 成人无码视频在线观看网站 | 成人试看120秒体验区 | 特级做a爰片毛片免费69 | 国内精品人妻无码久久久影院 | 四十如虎的丰满熟妇啪啪 | 日产国产精品亚洲系列 | 国产精品福利视频导航 | 中文字幕av伊人av无码av | 日本欧美一区二区三区乱码 | 久久久久av无码免费网 | 激情内射日本一区二区三区 | 国产成人无码一二三区视频 | 国产精品理论片在线观看 | 亚洲色在线无码国产精品不卡 | 成人精品天堂一区二区三区 | 99精品无人区乱码1区2区3区 | 国产情侣作爱视频免费观看 | 精品久久久中文字幕人妻 | 欧美性黑人极品hd | 日日干夜夜干 | 日本熟妇乱子伦xxxx | 亚洲区小说区激情区图片区 | 夜精品a片一区二区三区无码白浆 | 亚洲国产精品久久久天堂 | 51国偷自产一区二区三区 | 欧美日本免费一区二区三区 | 国精产品一品二品国精品69xx | 久久精品女人天堂av免费观看 | 内射欧美老妇wbb | 亚洲国产欧美国产综合一区 | 亚洲欧美日韩国产精品一区二区 | 欧美自拍另类欧美综合图片区 | 亚洲 高清 成人 动漫 | 国产绳艺sm调教室论坛 | 300部国产真实乱 | 18禁止看的免费污网站 | 久久午夜无码鲁丝片 | 亚洲欧美精品aaaaaa片 | 乱码av麻豆丝袜熟女系列 | 日本熟妇人妻xxxxx人hd | 久久天天躁狠狠躁夜夜免费观看 | 人妻少妇精品久久 | 天天躁日日躁狠狠躁免费麻豆 | 国产精品a成v人在线播放 | 东北女人啪啪对白 | 男女爱爱好爽视频免费看 | 亚洲色无码一区二区三区 | 日本熟妇人妻xxxxx人hd | 无码精品国产va在线观看dvd | 欧美丰满少妇xxxx性 | 成人精品视频一区二区 | 成人无码精品1区2区3区免费看 | 国产成人精品三级麻豆 | 日本爽爽爽爽爽爽在线观看免 | 天天拍夜夜添久久精品大 | 久久国产精品萌白酱免费 | 日本丰满熟妇videos | 久久99精品久久久久久动态图 | 免费国产黄网站在线观看 | 国产熟妇另类久久久久 | 国产又爽又黄又刺激的视频 | 久久99精品久久久久婷婷 | 国产真实乱对白精彩久久 | 精品国产国产综合精品 | 午夜熟女插插xx免费视频 | 99国产精品白浆在线观看免费 | 色五月五月丁香亚洲综合网 | 美女扒开屁股让男人桶 | 久久午夜夜伦鲁鲁片无码免费 | 久久99热只有频精品8 | 亚洲欧美综合区丁香五月小说 | 嫩b人妻精品一区二区三区 | 无码国产色欲xxxxx视频 | 少妇被黑人到高潮喷出白浆 | 午夜性刺激在线视频免费 | 亚洲日本va午夜在线电影 | 国产9 9在线 | 中文 | 国产午夜视频在线观看 | 在教室伦流澡到高潮hnp视频 | 精品亚洲成av人在线观看 | 国产偷自视频区视频 | 7777奇米四色成人眼影 | 无码人妻精品一区二区三区下载 | 少妇性俱乐部纵欲狂欢电影 | ass日本丰满熟妇pics | 国产精品香蕉在线观看 | 激情内射亚州一区二区三区爱妻 | 伊在人天堂亚洲香蕉精品区 | 国模大胆一区二区三区 | 精品国产国产综合精品 | 午夜丰满少妇性开放视频 | 玩弄少妇高潮ⅹxxxyw | 人妻少妇精品无码专区动漫 | 性做久久久久久久免费看 | 免费中文字幕日韩欧美 | 国产亚洲精品久久久久久久久动漫 | 成 人 免费观看网站 | 红桃av一区二区三区在线无码av | 日本又色又爽又黄的a片18禁 | 国产亚洲人成a在线v网站 | 性欧美videos高清精品 | 黑人巨大精品欧美一区二区 | 内射老妇bbwx0c0ck | 国精产品一品二品国精品69xx | 久久久成人毛片无码 | 成人无码精品1区2区3区免费看 | 久久精品国产精品国产精品污 | 图片小说视频一区二区 | 在线精品亚洲一区二区 | 无码国产色欲xxxxx视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 一本久道久久综合婷婷五月 | 樱花草在线播放免费中文 | 欧美35页视频在线观看 | 国产午夜手机精彩视频 | 日产精品高潮呻吟av久久 | 全黄性性激高免费视频 | 55夜色66夜色国产精品视频 | 亚洲精品成人福利网站 | 欧美喷潮久久久xxxxx | 亚洲精品一区二区三区在线 | 国内精品人妻无码久久久影院 | 美女扒开屁股让男人桶 | 国产精品国产自线拍免费软件 | 亚洲春色在线视频 | 亚洲中文字幕av在天堂 | 老司机亚洲精品影院 | 东京热男人av天堂 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲精品综合五月久久小说 | 乱人伦人妻中文字幕无码久久网 | 天海翼激烈高潮到腰振不止 | 欧美性色19p | 免费男性肉肉影院 | 欧美日本免费一区二区三区 | 内射白嫩少妇超碰 | 午夜精品久久久内射近拍高清 | 六十路熟妇乱子伦 | 亚洲成熟女人毛毛耸耸多 | 中文精品久久久久人妻不卡 | 久久午夜无码鲁丝片秋霞 | 日本精品高清一区二区 | 亚洲国产欧美日韩精品一区二区三区 | 欧美怡红院免费全部视频 | 国产小呦泬泬99精品 | 人人澡人人透人人爽 | 国产肉丝袜在线观看 | 色偷偷人人澡人人爽人人模 | 又大又硬又爽免费视频 | 一本无码人妻在中文字幕免费 | 欧美大屁股xxxxhd黑色 | 无码av岛国片在线播放 | 蜜桃av抽搐高潮一区二区 | 亚洲国产成人a精品不卡在线 | 免费国产成人高清在线观看网站 | 老子影院午夜精品无码 | 精品无码一区二区三区的天堂 | 久久亚洲中文字幕精品一区 | 亚洲精品久久久久avwww潮水 | 国产婷婷色一区二区三区在线 | 无码人妻av免费一区二区三区 | 牲欲强的熟妇农村老妇女 | 无码福利日韩神码福利片 | 国产热a欧美热a在线视频 | 国产午夜亚洲精品不卡下载 | 精品夜夜澡人妻无码av蜜桃 | 日韩少妇内射免费播放 | 亚洲中文字幕无码中文字在线 | 久久99精品国产麻豆 | 久久综合香蕉国产蜜臀av | 精品国产aⅴ无码一区二区 | 国内少妇偷人精品视频 | 2019午夜福利不卡片在线 | 精品无人区无码乱码毛片国产 | 日本精品高清一区二区 | 日韩av无码一区二区三区不卡 | 日韩人妻少妇一区二区三区 | 亚洲一区二区三区含羞草 | 亚洲高清偷拍一区二区三区 | 亚洲va欧美va天堂v国产综合 | 999久久久国产精品消防器材 | 亚洲综合无码一区二区三区 | 三级4级全黄60分钟 | 国产精品自产拍在线观看 | 乱中年女人伦av三区 | 久久久国产一区二区三区 | 国产精品人人妻人人爽 | 少妇久久久久久人妻无码 | 一本色道婷婷久久欧美 | 日本熟妇人妻xxxxx人hd | 久久天天躁狠狠躁夜夜免费观看 | 国产成人精品无码播放 | 国产亚洲精品久久久久久国模美 | 久久成人a毛片免费观看网站 | 日韩av无码中文无码电影 | 毛片内射-百度 | 亚洲国产精品一区二区美利坚 | 国产午夜福利亚洲第一 | 免费无码一区二区三区蜜桃大 | 色综合视频一区二区三区 | 久久精品国产一区二区三区肥胖 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产av一区二区三区最新精品 | 国产美女极度色诱视频www | 4hu四虎永久在线观看 | 亚洲日韩一区二区 | 国产成人精品一区二区在线小狼 | 日韩成人一区二区三区在线观看 | 久久久精品456亚洲影院 | 亚洲精品一区二区三区婷婷月 | 国产色精品久久人妻 | 偷窥日本少妇撒尿chinese | 久久精品中文闷骚内射 | 在线播放亚洲第一字幕 | 成人一在线视频日韩国产 | 久久亚洲日韩精品一区二区三区 | 久久久中文字幕日本无吗 | 香港三级日本三级妇三级 | 中文字幕久久久久人妻 | 青青青手机频在线观看 | av无码电影一区二区三区 | 白嫩日本少妇做爰 | 亚洲综合色区中文字幕 | 国产av一区二区精品久久凹凸 | 久久久久人妻一区精品色欧美 | 亚洲国产精品久久久天堂 | 国产又爽又黄又刺激的视频 | 天堂久久天堂av色综合 | 日本护士毛茸茸高潮 | 色综合久久久久综合一本到桃花网 | 亚洲欧美国产精品久久 | 久久亚洲日韩精品一区二区三区 | 久久人人爽人人爽人人片ⅴ | 狂野欧美性猛xxxx乱大交 | 水蜜桃亚洲一二三四在线 | 精品午夜福利在线观看 | 国产无套粉嫩白浆在线 | 丰满人妻一区二区三区免费视频 | 国产片av国语在线观看 | 无码精品人妻一区二区三区av | 乱人伦中文视频在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 天天av天天av天天透 | 亚洲另类伦春色综合小说 | av香港经典三级级 在线 | 精品午夜福利在线观看 | 两性色午夜免费视频 | 国产人妻精品午夜福利免费 | 伊人久久大香线蕉av一区二区 | 久久99精品国产.久久久久 | 在线播放亚洲第一字幕 | 久久精品人人做人人综合 | 国产xxx69麻豆国语对白 | 天堂在线观看www | 2020久久香蕉国产线看观看 | 欧美日韩精品 | 午夜男女很黄的视频 | 国产精品永久免费视频 | 无码乱肉视频免费大全合集 | 国产精品亚洲а∨无码播放麻豆 | 国产精品亚洲综合色区韩国 | 无码帝国www无码专区色综合 | 无套内谢的新婚少妇国语播放 | 久久www免费人成人片 | 免费无码av一区二区 | 成人无码精品1区2区3区免费看 | 亚洲第一网站男人都懂 | 小泽玛莉亚一区二区视频在线 | 国内少妇偷人精品视频 | 丰满人妻精品国产99aⅴ | 亚洲日韩一区二区 | 性欧美牲交在线视频 | 国产在线精品一区二区高清不卡 | 日韩欧美群交p片內射中文 | 精品无码av一区二区三区 | 欧美 日韩 人妻 高清 中文 | a在线观看免费网站大全 | 国产亚洲精品久久久久久久久动漫 | 强奷人妻日本中文字幕 | 亚洲一区二区观看播放 | а√资源新版在线天堂 | 国产婷婷色一区二区三区在线 | 天干天干啦夜天干天2017 | 国内揄拍国内精品人妻 | 福利一区二区三区视频在线观看 | 精品一二三区久久aaa片 | 日日麻批免费40分钟无码 | 久久精品成人欧美大片 | 精品国精品国产自在久国产87 | 成人免费无码大片a毛片 | 国产精品久久久久7777 | 丰腴饱满的极品熟妇 | 成 人影片 免费观看 | 亚洲精品午夜无码电影网 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产成人精品久久亚洲高清不卡 | 奇米影视7777久久精品 | 国产性生交xxxxx无码 | 高清国产亚洲精品自在久久 | 国产97在线 | 亚洲 | 人妻aⅴ无码一区二区三区 | 欧美色就是色 | 国内精品久久久久久中文字幕 | 天天躁夜夜躁狠狠是什么心态 | 在教室伦流澡到高潮hnp视频 | 一个人看的www免费视频在线观看 | 老太婆性杂交欧美肥老太 | 国产亚洲人成在线播放 | 性开放的女人aaa片 | 18禁止看的免费污网站 | 国产亚洲视频中文字幕97精品 | 熟女体下毛毛黑森林 | 国产香蕉97碰碰久久人人 | 欧美自拍另类欧美综合图片区 | 国产肉丝袜在线观看 | 国产超碰人人爽人人做人人添 | 亚洲色大成网站www国产 | 内射爽无广熟女亚洲 | 亚洲熟悉妇女xxx妇女av | 亚洲精品一区二区三区在线观看 | 老熟妇乱子伦牲交视频 | 国产9 9在线 | 中文 | 亚洲中文字幕无码中文字在线 | 亚洲成a人片在线观看日本 | 六月丁香婷婷色狠狠久久 | 成人av无码一区二区三区 | 无码精品国产va在线观看dvd | 免费看男女做好爽好硬视频 | 55夜色66夜色国产精品视频 | 国产成人无码av一区二区 | 荫蒂添的好舒服视频囗交 | 乱人伦人妻中文字幕无码 | 亚洲一区二区观看播放 | 天天做天天爱天天爽综合网 | 婷婷五月综合激情中文字幕 | 人妻尝试又大又粗久久 | 国产成人精品三级麻豆 | 巨爆乳无码视频在线观看 | 麻花豆传媒剧国产免费mv在线 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 性欧美熟妇videofreesex | 精品国产一区二区三区av 性色 | 奇米影视7777久久精品人人爽 | 国产免费观看黄av片 | 久久国产精品萌白酱免费 | 久久人人爽人人人人片 | 精品偷拍一区二区三区在线看 | 免费看男女做好爽好硬视频 | 欧美人妻一区二区三区 | 夜精品a片一区二区三区无码白浆 | 风流少妇按摩来高潮 | 亚洲春色在线视频 | 呦交小u女精品视频 | 久久精品女人天堂av免费观看 | 天堂无码人妻精品一区二区三区 | 伊人久久大香线焦av综合影院 | 日韩人妻无码中文字幕视频 | 学生妹亚洲一区二区 | 大肉大捧一进一出好爽视频 | 免费观看的无遮挡av | 大地资源中文第3页 | 国产免费观看黄av片 | 欧美国产日产一区二区 | 欧美人妻一区二区三区 | 久久久久免费看成人影片 | 亚洲成av人在线观看网址 | 粉嫩少妇内射浓精videos | 亚洲日韩中文字幕在线播放 | 国产绳艺sm调教室论坛 | 亚洲欧美日韩成人高清在线一区 | 美女极度色诱视频国产 | 熟妇女人妻丰满少妇中文字幕 | 欧美一区二区三区视频在线观看 | 久久婷婷五月综合色国产香蕉 | 国产做国产爱免费视频 | 少妇人妻偷人精品无码视频 | 99久久人妻精品免费二区 | 久久午夜无码鲁丝片午夜精品 | 中文无码成人免费视频在线观看 | 377p欧洲日本亚洲大胆 | 成人欧美一区二区三区黑人 | 最近的中文字幕在线看视频 | 日本精品少妇一区二区三区 | 久久精品无码一区二区三区 | 日韩少妇内射免费播放 | 天天av天天av天天透 | 久久 国产 尿 小便 嘘嘘 | 偷窥村妇洗澡毛毛多 | 日韩成人一区二区三区在线观看 | 日韩精品无码一本二本三本色 | 国产av人人夜夜澡人人爽麻豆 | 国产麻豆精品精东影业av网站 | 日本乱人伦片中文三区 | 精品水蜜桃久久久久久久 | 亚洲另类伦春色综合小说 | 夫妻免费无码v看片 | 久久精品国产99久久6动漫 | 麻豆蜜桃av蜜臀av色欲av | 欧美老人巨大xxxx做受 | 青青久在线视频免费观看 | 久久国产精品萌白酱免费 | 人人澡人摸人人添 | 久久精品成人欧美大片 | 国产精品久久久久久无码 | 樱花草在线社区www | 欧美xxxx黑人又粗又长 | 一个人免费观看的www视频 | 99久久精品午夜一区二区 | 国产区女主播在线观看 | 日日麻批免费40分钟无码 | 国产精品a成v人在线播放 | 乱人伦中文视频在线观看 | 乱人伦中文视频在线观看 | 亚洲va中文字幕无码久久不卡 | 在线亚洲高清揄拍自拍一品区 | 永久免费精品精品永久-夜色 | 亚洲区欧美区综合区自拍区 | 国产欧美精品一区二区三区 | 一本久久a久久精品vr综合 | 夜夜高潮次次欢爽av女 | 一本色道久久综合狠狠躁 | 精品乱子伦一区二区三区 | 在线a亚洲视频播放在线观看 | 欧美熟妇另类久久久久久不卡 | 国产电影无码午夜在线播放 | 好爽又高潮了毛片免费下载 | 久久久久国色av免费观看性色 | 国产极品美女高潮无套在线观看 | 亚洲精品一区二区三区大桥未久 | 在线亚洲高清揄拍自拍一品区 | 久青草影院在线观看国产 | 性欧美疯狂xxxxbbbb | 久久婷婷五月综合色国产香蕉 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 中文字幕无码av波多野吉衣 | 色情久久久av熟女人妻网站 | 男女猛烈xx00免费视频试看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 男人的天堂2018无码 | 国产欧美亚洲精品a | 久久人人爽人人爽人人片ⅴ | 久久午夜无码鲁丝片午夜精品 | 国产精品久久久久无码av色戒 | 久久99久久99精品中文字幕 | 噜噜噜亚洲色成人网站 | 久久久久亚洲精品中文字幕 | 欧美精品国产综合久久 | 樱花草在线播放免费中文 | 国产激情精品一区二区三区 | 国产亚av手机在线观看 | 伊人久久婷婷五月综合97色 | 麻花豆传媒剧国产免费mv在线 | 蜜桃无码一区二区三区 | 在线观看欧美一区二区三区 | 黑人巨大精品欧美一区二区 | 一本加勒比波多野结衣 | 日本xxxx色视频在线观看免费 | 国产9 9在线 | 中文 | 亚洲精品久久久久avwww潮水 | 蜜桃无码一区二区三区 | 中国大陆精品视频xxxx | 亚洲国产一区二区三区在线观看 | www成人国产高清内射 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲人成人无码网www国产 | 性色欲网站人妻丰满中文久久不卡 | 日本成熟视频免费视频 | 国产又爽又黄又刺激的视频 | 国产午夜无码视频在线观看 | 俺去俺来也在线www色官网 | 亚洲午夜福利在线观看 | а√资源新版在线天堂 | 人人妻人人澡人人爽精品欧美 | 久久人人爽人人爽人人片av高清 | 久久精品中文闷骚内射 | 国产精品对白交换视频 | 少妇一晚三次一区二区三区 | 永久免费观看国产裸体美女 | 帮老师解开蕾丝奶罩吸乳网站 | 妺妺窝人体色www婷婷 | 131美女爱做视频 | 免费播放一区二区三区 | 亚洲第一无码av无码专区 | 亚洲精品综合一区二区三区在线 | 日本乱人伦片中文三区 | 成人无码精品1区2区3区免费看 | 99久久人妻精品免费二区 | 国产激情艳情在线看视频 | 亚洲精品国产a久久久久久 | 丰满肥臀大屁股熟妇激情视频 | 中文亚洲成a人片在线观看 | 正在播放老肥熟妇露脸 | 精品偷自拍另类在线观看 | 精品国产av色一区二区深夜久久 | 精品久久综合1区2区3区激情 | 少妇被粗大的猛进出69影院 | 国产精品无码一区二区桃花视频 | 好爽又高潮了毛片免费下载 | 特大黑人娇小亚洲女 | 久久久久久久人妻无码中文字幕爆 | 国产口爆吞精在线视频 | 亚洲日韩一区二区 | 日本精品高清一区二区 | 人人妻人人澡人人爽欧美一区九九 | 亚洲成a人片在线观看无码3d | 樱花草在线社区www | 国产av剧情md精品麻豆 | 风流少妇按摩来高潮 | 色情久久久av熟女人妻网站 | 自拍偷自拍亚洲精品被多人伦好爽 | 日本一区二区三区免费高清 | 日本免费一区二区三区最新 | 久久午夜无码鲁丝片秋霞 | 丰满少妇弄高潮了www | av人摸人人人澡人人超碰下载 | 国产精品a成v人在线播放 | 精品无码av一区二区三区 | 女人和拘做爰正片视频 | 玩弄少妇高潮ⅹxxxyw | 荫蒂被男人添的好舒服爽免费视频 | 亚洲色欲久久久综合网东京热 | 天天躁夜夜躁狠狠是什么心态 | 国产在线精品一区二区三区直播 | 精品无码国产自产拍在线观看蜜 | 九月婷婷人人澡人人添人人爽 | 2020久久超碰国产精品最新 | 亚洲综合在线一区二区三区 | 国产免费无码一区二区视频 | 国产高清av在线播放 | 天天躁日日躁狠狠躁免费麻豆 | 国产香蕉尹人视频在线 | 国产猛烈高潮尖叫视频免费 | 午夜福利电影 | 1000部夫妻午夜免费 | 无码免费一区二区三区 | 婷婷丁香六月激情综合啪 | 四十如虎的丰满熟妇啪啪 | 欧美激情内射喷水高潮 | 色婷婷综合中文久久一本 | 撕开奶罩揉吮奶头视频 | 老熟妇仑乱视频一区二区 | 欧美喷潮久久久xxxxx | 午夜成人1000部免费视频 | 免费观看激色视频网站 | 无码成人精品区在线观看 | 国产激情无码一区二区 | 99er热精品视频 | 亚洲精品中文字幕乱码 | 国产人妻大战黑人第1集 | 在线看片无码永久免费视频 | 亚洲国产精品一区二区美利坚 | 九九在线中文字幕无码 | 无码成人精品区在线观看 | 国产亚洲精品久久久久久久久动漫 | 人妻无码久久精品人妻 | 亚洲男人av天堂午夜在 | 成 人 网 站国产免费观看 | 国产在线精品一区二区高清不卡 | 天堂在线观看www | 久久久久久久久蜜桃 | 日韩av激情在线观看 | 人妻少妇精品久久 | 亚洲啪av永久无码精品放毛片 | 欧美日韩视频无码一区二区三 | 久久亚洲a片com人成 | 99久久亚洲精品无码毛片 | 国产成人精品久久亚洲高清不卡 | 亚洲精品国产精品乱码不卡 | 亚洲自偷自拍另类第1页 | 国产九九九九九九九a片 | 久久五月精品中文字幕 | 国产成人亚洲综合无码 | 国产成人综合美国十次 | 欧美freesex黑人又粗又大 | 熟女俱乐部五十路六十路av | 亚洲人成人无码网www国产 | 久久久久成人精品免费播放动漫 | 久久精品99久久香蕉国产色戒 | 欧美怡红院免费全部视频 | 国产午夜精品一区二区三区嫩草 | 亚洲熟妇色xxxxx欧美老妇y | 自拍偷自拍亚洲精品被多人伦好爽 | 日韩欧美群交p片內射中文 | 成人免费无码大片a毛片 | 日本精品久久久久中文字幕 | 日韩精品无码一本二本三本色 | 国产人妻人伦精品1国产丝袜 | 午夜无码区在线观看 | 亚洲国产一区二区三区在线观看 | 大乳丰满人妻中文字幕日本 | 无码精品国产va在线观看dvd | 1000部夫妻午夜免费 | 亚洲精品综合五月久久小说 | 亚洲乱码日产精品bd | 亚洲国产午夜精品理论片 | 国产精品第一区揄拍无码 | 少女韩国电视剧在线观看完整 | 欧美 亚洲 国产 另类 | 2020久久香蕉国产线看观看 | 日韩亚洲欧美精品综合 | 人妻中文无码久热丝袜 | 人人妻人人澡人人爽欧美一区九九 | 午夜精品一区二区三区的区别 | 成人影院yy111111在线观看 | 日日麻批免费40分钟无码 | 日本熟妇大屁股人妻 | 国产在线aaa片一区二区99 | 性生交片免费无码看人 | 国产精品久久精品三级 | 国产精品99久久精品爆乳 | 国产精品久久久一区二区三区 | 国产sm调教视频在线观看 | 六十路熟妇乱子伦 | 国产亚洲tv在线观看 | 纯爱无遮挡h肉动漫在线播放 | 熟妇人妻无码xxx视频 | 色情久久久av熟女人妻网站 | 中文字幕乱码亚洲无线三区 | 久久zyz资源站无码中文动漫 | 高清无码午夜福利视频 | 国产真人无遮挡作爱免费视频 | 精品国产青草久久久久福利 | 色狠狠av一区二区三区 | 亚洲精品一区二区三区四区五区 | 性做久久久久久久久 | 久久人人爽人人爽人人片av高清 | 国产熟妇高潮叫床视频播放 | 国产精品久久久久久久影院 | 亚洲国产欧美在线成人 | 欧美日韩精品 | 亚洲欧洲中文日韩av乱码 | 亚洲色欲久久久综合网东京热 | 精品无码成人片一区二区98 | 国产精品久久久 | 亚洲国产欧美日韩精品一区二区三区 | 内射后入在线观看一区 | 一二三四社区在线中文视频 | 久久亚洲精品中文字幕无男同 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 中文无码伦av中文字幕 | 久久久久免费看成人影片 | 精品久久久中文字幕人妻 | 久久国产精品萌白酱免费 | 无遮无挡爽爽免费视频 | 久久精品丝袜高跟鞋 | 色窝窝无码一区二区三区色欲 | 精品人妻中文字幕有码在线 | 国产无套粉嫩白浆在线 | 成人无码精品一区二区三区 | 久久国产精品萌白酱免费 | 国产热a欧美热a在线视频 | 国产手机在线αⅴ片无码观看 | 蜜臀av在线播放 久久综合激激的五月天 | 美女黄网站人色视频免费国产 | 十八禁真人啪啪免费网站 | 欧美性猛交xxxx富婆 | 99久久久无码国产aaa精品 | 日韩无套无码精品 | 国产成人无码av一区二区 | 男人扒开女人内裤强吻桶进去 | 亚洲精品国产第一综合99久久 | 精品无人区无码乱码毛片国产 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产精品va在线播放 | 两性色午夜视频免费播放 | 蜜臀av无码人妻精品 | 国产黄在线观看免费观看不卡 | 成人无码影片精品久久久 | 妺妺窝人体色www婷婷 | 成在人线av无码免观看麻豆 | 日韩精品a片一区二区三区妖精 | 国产热a欧美热a在线视频 | 在线播放亚洲第一字幕 | 小泽玛莉亚一区二区视频在线 | 亚洲精品久久久久中文第一幕 | 国内老熟妇对白xxxxhd | 中文字幕乱码亚洲无线三区 | 东京热无码av男人的天堂 | 久久久精品欧美一区二区免费 | 丰满妇女强制高潮18xxxx | 无码纯肉视频在线观看 | 久久99久久99精品中文字幕 | 亚洲大尺度无码无码专区 | 久久久久99精品国产片 | 久久99精品久久久久久 | 国产亚洲日韩欧美另类第八页 | 丁香花在线影院观看在线播放 | 久久精品无码一区二区三区 | 欧美三级a做爰在线观看 | 给我免费的视频在线观看 | 国产小呦泬泬99精品 | 亚洲欧美精品aaaaaa片 | 国产精品18久久久久久麻辣 | 波多野结衣av在线观看 | 免费中文字幕日韩欧美 | 少妇被粗大的猛进出69影院 | 亚洲狠狠色丁香婷婷综合 | 精品国精品国产自在久国产87 | 99久久无码一区人妻 | 蜜桃无码一区二区三区 | 日日夜夜撸啊撸 | 一本久久a久久精品vr综合 | 日韩av无码一区二区三区 | 日产精品高潮呻吟av久久 | 国产精品美女久久久网av | 欧美freesex黑人又粗又大 | 日韩成人一区二区三区在线观看 | 国产香蕉尹人视频在线 | 国产午夜手机精彩视频 | 在线а√天堂中文官网 | 日本www一道久久久免费榴莲 | 亚洲日韩av一区二区三区中文 | 日本熟妇乱子伦xxxx | 精品国产一区二区三区av 性色 | 欧美熟妇另类久久久久久多毛 | 97久久国产亚洲精品超碰热 | 欧美黑人性暴力猛交喷水 | 水蜜桃色314在线观看 | 国产乱人偷精品人妻a片 | 男人和女人高潮免费网站 | 成人试看120秒体验区 | 中文毛片无遮挡高清免费 | 三上悠亚人妻中文字幕在线 | 熟妇人妻中文av无码 | 丰满岳乱妇在线观看中字无码 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲国产成人av在线观看 | 色综合久久久久综合一本到桃花网 | 日韩无套无码精品 | 欧美成人午夜精品久久久 | 国产无遮挡又黄又爽又色 | 亚洲啪av永久无码精品放毛片 | 少妇被黑人到高潮喷出白浆 | 久久婷婷五月综合色国产香蕉 | 国产精品理论片在线观看 | 亚洲精品久久久久久久久久久 | 国产精品久久久久7777 | 大胆欧美熟妇xx | 中文字幕无线码免费人妻 | 鲁一鲁av2019在线 | 久久精品99久久香蕉国产色戒 | 99精品无人区乱码1区2区3区 | 老司机亚洲精品影院无码 | 无码国产激情在线观看 | 图片小说视频一区二区 | 无码av最新清无码专区吞精 | 色综合久久久久综合一本到桃花网 | 国产精品18久久久久久麻辣 | 中文字幕无码免费久久99 | 伊人久久婷婷五月综合97色 | 荫蒂被男人添的好舒服爽免费视频 | 日韩欧美中文字幕公布 | 久久人人爽人人爽人人片ⅴ | 国产精品高潮呻吟av久久 | 国产在线一区二区三区四区五区 | 亚洲人成网站在线播放942 | 九月婷婷人人澡人人添人人爽 | 少女韩国电视剧在线观看完整 | 无遮挡国产高潮视频免费观看 | 欧美亚洲日韩国产人成在线播放 | 国产成人一区二区三区别 | aa片在线观看视频在线播放 | 亚洲成av人影院在线观看 | 麻豆md0077饥渴少妇 | 国产精品a成v人在线播放 | 免费看男女做好爽好硬视频 | 亚洲最大成人网站 | 国内综合精品午夜久久资源 | 日韩人妻无码中文字幕视频 | 中文字幕av无码一区二区三区电影 | 国产高清av在线播放 | 国产亚洲精品久久久闺蜜 | 99久久人妻精品免费二区 | 九九在线中文字幕无码 | а√资源新版在线天堂 | 成人一在线视频日韩国产 | 亚洲精品久久久久久久久久久 | 久久久中文字幕日本无吗 | 性做久久久久久久久 | 精品成在人线av无码免费看 | 2019午夜福利不卡片在线 | 一个人免费观看的www视频 | 亚洲综合色区中文字幕 | 水蜜桃亚洲一二三四在线 | 少妇的肉体aa片免费 | 久久精品成人欧美大片 | 夜夜躁日日躁狠狠久久av | 色一情一乱一伦一视频免费看 | 日韩视频 中文字幕 视频一区 | 丰满少妇人妻久久久久久 | 国产色在线 | 国产 | 无遮无挡爽爽免费视频 | 精品一区二区不卡无码av | 国产两女互慰高潮视频在线观看 | 精品水蜜桃久久久久久久 | 免费国产成人高清在线观看网站 | 无码人妻av免费一区二区三区 | 国产午夜无码视频在线观看 | 欧美三级不卡在线观看 | 成人无码视频免费播放 | 88国产精品欧美一区二区三区 | 亚洲码国产精品高潮在线 | 67194成是人免费无码 | 暴力强奷在线播放无码 | 人妻有码中文字幕在线 | 色婷婷欧美在线播放内射 | 色欲av亚洲一区无码少妇 | 亚洲精品一区二区三区在线观看 | 曰韩少妇内射免费播放 | 激情五月综合色婷婷一区二区 | 国产精品久久久久9999小说 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精华av午夜在线观看 | 国产成人亚洲综合无码 | 国产成人无码一二三区视频 | 精品日本一区二区三区在线观看 | 久久亚洲日韩精品一区二区三区 | 牲欲强的熟妇农村老妇女 | 国产成人一区二区三区在线观看 | 麻豆蜜桃av蜜臀av色欲av | 无码人妻久久一区二区三区不卡 | 中国女人内谢69xxxx | 97夜夜澡人人双人人人喊 | 午夜时刻免费入口 | 久久午夜夜伦鲁鲁片无码免费 | 成在人线av无码免费 | 九九久久精品国产免费看小说 | 亚洲大尺度无码无码专区 | 国产农村乱对白刺激视频 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲乱码日产精品bd | 亚洲欧洲无卡二区视頻 | 国产精品二区一区二区aⅴ污介绍 | 亚洲国产欧美在线成人 | 对白脏话肉麻粗话av | 久久精品人人做人人综合试看 | 日日麻批免费40分钟无码 | 国产成人精品三级麻豆 | 中文字幕人妻无码一区二区三区 | 宝宝好涨水快流出来免费视频 | 377p欧洲日本亚洲大胆 | 思思久久99热只有频精品66 | 国产人妻久久精品二区三区老狼 | 精品欧美一区二区三区久久久 | 一本无码人妻在中文字幕免费 | 亚洲va中文字幕无码久久不卡 | 精品亚洲成av人在线观看 | 国产成人综合色在线观看网站 | 精品国产乱码久久久久乱码 | 帮老师解开蕾丝奶罩吸乳网站 | 野外少妇愉情中文字幕 | 欧美怡红院免费全部视频 | 中文字幕无码免费久久9一区9 | 色一情一乱一伦一视频免费看 | 扒开双腿疯狂进出爽爽爽视频 | 欧美性生交xxxxx久久久 | 无码一区二区三区在线观看 | 性欧美牲交xxxxx视频 | 国产精品亚洲五月天高清 | 亚洲码国产精品高潮在线 | 亚洲精品鲁一鲁一区二区三区 | a在线观看免费网站大全 | 中文久久乱码一区二区 | 人妻尝试又大又粗久久 | 欧美真人作爱免费视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 一本大道久久东京热无码av | 国产午夜精品一区二区三区嫩草 | 美女毛片一区二区三区四区 | 天堂а√在线地址中文在线 | 人人爽人人澡人人人妻 | 国产精品美女久久久久av爽李琼 | 1000部啪啪未满十八勿入下载 | 国产精品久久久久影院嫩草 | 狂野欧美性猛xxxx乱大交 | 国产一区二区三区精品视频 | 亚洲中文无码av永久不收费 | 日本丰满熟妇videos | 久久久久国色av免费观看性色 | 人人爽人人澡人人高潮 | 色情久久久av熟女人妻网站 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲精品美女久久久久久久 | 国产黄在线观看免费观看不卡 | 国产精品久久久久7777 | 成 人影片 免费观看 | 日本熟妇大屁股人妻 | 中文字幕无码av波多野吉衣 | av香港经典三级级 在线 | 高中生自慰www网站 | 国产无套内射久久久国产 | 黑人巨大精品欧美黑寡妇 | 国产色精品久久人妻 | 在线看片无码永久免费视频 | 亚洲一区二区三区播放 | 老司机亚洲精品影院 | 国产精品久久久 | 67194成是人免费无码 | 欧美激情一区二区三区成人 | 黑人巨大精品欧美一区二区 | 性色欲网站人妻丰满中文久久不卡 | 国产激情无码一区二区app | 人妻体内射精一区二区三四 | 亚洲日本va中文字幕 | 水蜜桃色314在线观看 | 午夜无码区在线观看 | 国产精品高潮呻吟av久久 | 波多野42部无码喷潮在线 | 欧洲精品码一区二区三区免费看 | 日本一卡二卡不卡视频查询 | 久久精品人人做人人综合试看 | 中文字幕人妻无码一区二区三区 | 久久久无码中文字幕久... | 久久精品国产精品国产精品污 | 国产成人无码a区在线观看视频app | 免费人成在线观看网站 | 沈阳熟女露脸对白视频 | 清纯唯美经典一区二区 | 人人妻人人澡人人爽欧美一区 | 亚洲日本在线电影 | 18无码粉嫩小泬无套在线观看 | 久久精品一区二区三区四区 | 美女黄网站人色视频免费国产 | 色婷婷久久一区二区三区麻豆 | 国产成人无码午夜视频在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 影音先锋中文字幕无码 | 国产特级毛片aaaaaaa高清 | 人妻少妇被猛烈进入中文字幕 | 亚洲人成人无码网www国产 | 国产av人人夜夜澡人人爽麻豆 | 国产人成高清在线视频99最全资源 | 亚洲最大成人网站 | 亚洲经典千人经典日产 | 国产又粗又硬又大爽黄老大爷视 | 久久精品国产一区二区三区肥胖 | 中文久久乱码一区二区 | 少妇性荡欲午夜性开放视频剧场 | 国产后入清纯学生妹 | 午夜免费福利小电影 | 精品无人区无码乱码毛片国产 | 久久精品99久久香蕉国产色戒 | 婷婷综合久久中文字幕蜜桃三电影 | 国产9 9在线 | 中文 | 亚洲 日韩 欧美 成人 在线观看 | 日韩av无码中文无码电影 | 国产一精品一av一免费 | 亚洲国产高清在线观看视频 | 亚洲自偷自偷在线制服 | 中文字幕人妻无码一夲道 | 亚洲精品午夜国产va久久成人 | 荫蒂被男人添的好舒服爽免费视频 | 成人无码精品一区二区三区 | 中文字幕无码免费久久99 | 国产偷国产偷精品高清尤物 | 高清国产亚洲精品自在久久 | 色五月五月丁香亚洲综合网 | 4hu四虎永久在线观看 | 成人欧美一区二区三区黑人免费 | 亚洲精品成人福利网站 | 美女毛片一区二区三区四区 | 亚洲男人av天堂午夜在 | 装睡被陌生人摸出水好爽 | √天堂中文官网8在线 | 国产成人综合在线女婷五月99播放 | 无码福利日韩神码福利片 | 欧洲美熟女乱又伦 | 在线观看免费人成视频 | 亚洲人成人无码网www国产 | 亚洲精品成a人在线观看 | 中文字幕乱码中文乱码51精品 | 欧美精品在线观看 | 国产色在线 | 国产 | 骚片av蜜桃精品一区 | 亚洲欧美精品伊人久久 | 国产精品久久国产三级国 | 桃花色综合影院 | 亚洲色欲久久久综合网东京热 | 国产av一区二区精品久久凹凸 | 国产三级精品三级男人的天堂 | 野外少妇愉情中文字幕 | 天下第一社区视频www日本 | 欧美激情内射喷水高潮 | 亚洲日韩精品欧美一区二区 | 久久精品国产日本波多野结衣 | 无码av最新清无码专区吞精 | 精品国产福利一区二区 | 岛国片人妻三上悠亚 | 精品国偷自产在线视频 | 丝袜足控一区二区三区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产精品美女久久久久av爽李琼 | 久久97精品久久久久久久不卡 | 少妇厨房愉情理9仑片视频 | 18无码粉嫩小泬无套在线观看 | 日日干夜夜干 | 香港三级日本三级妇三级 | 久久亚洲中文字幕精品一区 | 俄罗斯老熟妇色xxxx | 色一情一乱一伦一区二区三欧美 | 暴力强奷在线播放无码 | 免费男性肉肉影院 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产 精品 自在自线 | 鲁一鲁av2019在线 | 亚洲自偷精品视频自拍 | 波多野结衣av在线观看 | 欧美日韩亚洲国产精品 | 97夜夜澡人人爽人人喊中国片 | 精品国产乱码久久久久乱码 | 婷婷六月久久综合丁香 | 日本一区二区三区免费播放 | 色爱情人网站 | 中文字幕无码免费久久99 | 久久精品国产大片免费观看 | 纯爱无遮挡h肉动漫在线播放 | 无码午夜成人1000部免费视频 | 国产人妻人伦精品1国产丝袜 | 天天做天天爱天天爽综合网 | 亚洲国产欧美在线成人 | 2020久久超碰国产精品最新 | 成年美女黄网站色大免费全看 | 亚洲精品国产品国语在线观看 | 青青青爽视频在线观看 | 久久午夜无码鲁丝片秋霞 | 亚洲狠狠色丁香婷婷综合 | 国产精品美女久久久网av | 国产人妻精品午夜福利免费 | 中文字幕无码日韩欧毛 | 久久这里只有精品视频9 | 无码吃奶揉捏奶头高潮视频 | 国产两女互慰高潮视频在线观看 | 99麻豆久久久国产精品免费 | 国产熟妇高潮叫床视频播放 | 久久综合九色综合欧美狠狠 | 欧美日韩综合一区二区三区 | 色窝窝无码一区二区三区色欲 | 精品久久久久香蕉网 | 国产艳妇av在线观看果冻传媒 | 无码人妻精品一区二区三区不卡 | 99久久无码一区人妻 | 麻花豆传媒剧国产免费mv在线 | 西西人体www44rt大胆高清 | 久久久久99精品成人片 | 日产国产精品亚洲系列 | 乱中年女人伦av三区 | 国产美女极度色诱视频www | 久久久久se色偷偷亚洲精品av | 特黄特色大片免费播放器图片 | 国产精品自产拍在线观看 | 婷婷丁香六月激情综合啪 | 国产超级va在线观看视频 | 十八禁真人啪啪免费网站 | 国产乱子伦视频在线播放 | 国产av无码专区亚洲awww | 国产极品美女高潮无套在线观看 | 精品水蜜桃久久久久久久 | 天天摸天天透天天添 | 精品国产aⅴ无码一区二区 | 日本熟妇乱子伦xxxx | 曰韩无码二三区中文字幕 | 亚洲第一无码av无码专区 | 亚洲国精产品一二二线 | 久久99热只有频精品8 | 欧美日韩亚洲国产精品 | 乱人伦人妻中文字幕无码久久网 | 国产乱人偷精品人妻a片 | 无码人妻精品一区二区三区不卡 | 欧美真人作爱免费视频 | 丰满少妇女裸体bbw | 国产绳艺sm调教室论坛 | 在线看片无码永久免费视频 | 97色伦图片97综合影院 | 在教室伦流澡到高潮hnp视频 | 乱人伦人妻中文字幕无码 | 中文字幕人成乱码熟女app | 国产激情一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 色婷婷香蕉在线一区二区 | 狠狠色噜噜狠狠狠7777奇米 | 日韩欧美群交p片內射中文 | 欧美三级不卡在线观看 | 久久99热只有频精品8 | 精品国产一区二区三区av 性色 | 欧美黑人乱大交 | 扒开双腿疯狂进出爽爽爽视频 | 小鲜肉自慰网站xnxx | 亚洲国产成人av在线观看 | 十八禁真人啪啪免费网站 | 天天做天天爱天天爽综合网 | 高潮毛片无遮挡高清免费 | 伊人久久大香线蕉亚洲 | 国产黑色丝袜在线播放 | 噜噜噜亚洲色成人网站 | 亚洲爆乳精品无码一区二区三区 | 国产成人无码区免费内射一片色欲 | 国产av无码专区亚洲awww | 亚洲第一网站男人都懂 | 狠狠噜狠狠狠狠丁香五月 | 爆乳一区二区三区无码 | 久久99精品久久久久久动态图 | 久久国产精品偷任你爽任你 | 国产一区二区三区影院 | 亚洲欧美国产精品专区久久 | 99久久精品日本一区二区免费 | 天天摸天天透天天添 | 日韩av无码一区二区三区 | 一本大道伊人av久久综合 | 狠狠色噜噜狠狠狠7777奇米 | 国产精品手机免费 | 一本色道久久综合亚洲精品不卡 | 丰满少妇人妻久久久久久 | 国产精品第一区揄拍无码 | 乌克兰少妇xxxx做受 | 人人妻人人澡人人爽欧美一区 | 中文字幕无码视频专区 | 欧美黑人性暴力猛交喷水 | 亚洲色欲色欲欲www在线 | 无遮挡国产高潮视频免费观看 | 精品国精品国产自在久国产87 | 初尝人妻少妇中文字幕 | 亚洲日韩乱码中文无码蜜桃臀网站 | 中文字幕中文有码在线 | 5858s亚洲色大成网站www | 性欧美熟妇videofreesex | 青春草在线视频免费观看 | 少妇无套内谢久久久久 | 55夜色66夜色国产精品视频 | 国产色视频一区二区三区 | 国产九九九九九九九a片 | 成人无码精品1区2区3区免费看 | 国产亚洲人成在线播放 | 欧美三级a做爰在线观看 | 红桃av一区二区三区在线无码av | 日欧一片内射va在线影院 | 国产精品二区一区二区aⅴ污介绍 | 男人的天堂2018无码 | 亚洲日韩一区二区 | 精品久久久无码中文字幕 | 国产精品二区一区二区aⅴ污介绍 | 久久熟妇人妻午夜寂寞影院 | 日韩少妇白浆无码系列 | 国产9 9在线 | 中文 | 欧美猛少妇色xxxxx | 亚洲精品成人福利网站 | 久久久久亚洲精品男人的天堂 | 国产在线精品一区二区高清不卡 | 亚洲色无码一区二区三区 | 丝袜人妻一区二区三区 | 九一九色国产 | 东京热无码av男人的天堂 | 又黄又爽又色的视频 | 天天拍夜夜添久久精品大 | 日本熟妇大屁股人妻 | 国产精品久久久久影院嫩草 | 无码乱肉视频免费大全合集 | 国产凸凹视频一区二区 | 国产69精品久久久久app下载 | 中文字幕无码热在线视频 | 性啪啪chinese东北女人 | 久久天天躁夜夜躁狠狠 | 性生交大片免费看l | 亚洲啪av永久无码精品放毛片 | 精品国产国产综合精品 | 人人爽人人澡人人高潮 | 人人妻人人澡人人爽人人精品浪潮 | 无码帝国www无码专区色综合 | 无码人妻出轨黑人中文字幕 | 一本久道久久综合狠狠爱 | 亚洲国产精品成人久久蜜臀 | 日韩人妻无码中文字幕视频 | 国产人妻精品一区二区三区 | 高潮喷水的毛片 | 成熟人妻av无码专区 | 久久久久成人片免费观看蜜芽 | 欧美激情内射喷水高潮 | 丝袜足控一区二区三区 | 国产精品第一国产精品 | 成在人线av无码免观看麻豆 | 久久无码中文字幕免费影院蜜桃 | 色狠狠av一区二区三区 | 国产小呦泬泬99精品 | 人妻少妇被猛烈进入中文字幕 | 国产午夜亚洲精品不卡下载 | 欧美性猛交内射兽交老熟妇 | 青草青草久热国产精品 | 人人澡人人妻人人爽人人蜜桃 | 黑人巨大精品欧美黑寡妇 | 一个人看的www免费视频在线观看 | 久久久精品国产sm最大网站 | 亚洲综合无码久久精品综合 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产乱人伦偷精品视频 | 久久人妻内射无码一区三区 | 一区二区三区乱码在线 | 欧洲 | 亚洲国产精品久久久久久 | 女人被爽到呻吟gif动态图视看 | 55夜色66夜色国产精品视频 | 老太婆性杂交欧美肥老太 | 人妻尝试又大又粗久久 | 国产人妖乱国产精品人妖 | 色诱久久久久综合网ywww | 亚洲日韩av片在线观看 | 女人被爽到呻吟gif动态图视看 | 亚洲国产精品美女久久久久 | 人人妻人人澡人人爽欧美一区九九 | 人妻插b视频一区二区三区 | 亚洲狠狠婷婷综合久久 | 中文字幕久久久久人妻 | 午夜肉伦伦影院 | 国精产品一区二区三区 | 一二三四在线观看免费视频 | 色综合久久久久综合一本到桃花网 | 欧美国产日韩亚洲中文 | 福利一区二区三区视频在线观看 | 偷窥日本少妇撒尿chinese | 未满成年国产在线观看 | 俄罗斯老熟妇色xxxx | 欧美丰满熟妇xxxx | 激情人妻另类人妻伦 | 无码av岛国片在线播放 | 性欧美熟妇videofreesex | 中文精品久久久久人妻不卡 | 亚洲欧美中文字幕5发布 | 日韩无套无码精品 | 国产成人精品优优av | 国产乱子伦视频在线播放 | 国产午夜亚洲精品不卡 | 丰满人妻一区二区三区免费视频 | 黑人巨大精品欧美黑寡妇 | 熟妇人妻无乱码中文字幕 | 国产熟女一区二区三区四区五区 | 国产高清av在线播放 | 四虎国产精品一区二区 | 无码人妻av免费一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 动漫av网站免费观看 | 久久久www成人免费毛片 | 久久久婷婷五月亚洲97号色 | 国产成人精品久久亚洲高清不卡 | 精品一区二区三区波多野结衣 | 久久久久久九九精品久 | 亚洲性无码av中文字幕 | 十八禁真人啪啪免费网站 | 人妻少妇精品无码专区二区 | 精品无人区无码乱码毛片国产 | 精品亚洲韩国一区二区三区 | 精品久久综合1区2区3区激情 | 99久久精品无码一区二区毛片 | 欧美日本日韩 | 国产精品亚洲а∨无码播放麻豆 | 中文字幕乱码亚洲无线三区 | 亚洲中文无码av永久不收费 | 中文字幕无线码免费人妻 | 久久久久久久女国产乱让韩 | av人摸人人人澡人人超碰下载 | 久久99热只有频精品8 | 欧美日韩综合一区二区三区 | 免费观看激色视频网站 | 亚洲aⅴ无码成人网站国产app | 精品偷自拍另类在线观看 | 天干天干啦夜天干天2017 | 国产肉丝袜在线观看 | 久热国产vs视频在线观看 | 国产亚洲tv在线观看 | 乱人伦人妻中文字幕无码 | 蜜桃视频韩日免费播放 | 亚洲综合无码久久精品综合 | 欧美刺激性大交 | 国产精品18久久久久久麻辣 | 人妻少妇精品久久 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产av人人夜夜澡人人爽麻豆 | 亚洲a无码综合a国产av中文 | 亚洲一区二区三区偷拍女厕 | 人人爽人人澡人人人妻 | 国产精品高潮呻吟av久久4虎 | 亚无码乱人伦一区二区 | 强伦人妻一区二区三区视频18 | 精品久久久久久亚洲精品 | 国产成人无码av一区二区 | 久久久精品国产sm最大网站 | 国产超碰人人爽人人做人人添 | 久久久久久国产精品无码下载 | 高清不卡一区二区三区 | 无码一区二区三区在线观看 | 国产午夜无码视频在线观看 | 真人与拘做受免费视频 | 欧美肥老太牲交大战 | 玩弄中年熟妇正在播放 | 无人区乱码一区二区三区 | av无码不卡在线观看免费 | 国产成人无码a区在线观看视频app | 国产激情无码一区二区 | 麻豆国产丝袜白领秘书在线观看 | a在线亚洲男人的天堂 | 亚洲小说春色综合另类 | 精品人妻人人做人人爽夜夜爽 | 风流少妇按摩来高潮 | 日本丰满护士爆乳xxxx | 国产sm调教视频在线观看 | 久久精品人妻少妇一区二区三区 | 精品久久久久久亚洲精品 | 乱码午夜-极国产极内射 | 中文字幕无线码 | 99国产精品白浆在线观看免费 | 九九在线中文字幕无码 | 俺去俺来也在线www色官网 | 国产熟女一区二区三区四区五区 | 国产激情精品一区二区三区 | 日韩精品一区二区av在线 | 亚洲日本va午夜在线电影 | 亚洲成a人片在线观看日本 | www成人国产高清内射 | 亚洲日韩av片在线观看 | 日本在线高清不卡免费播放 | 国产三级久久久精品麻豆三级 | 久久精品国产99精品亚洲 | 中文字幕无码日韩欧毛 | 国产一精品一av一免费 | 国产午夜无码视频在线观看 | 欧美xxxxx精品 | 亲嘴扒胸摸屁股激烈网站 | 午夜精品一区二区三区的区别 | 一本久道久久综合婷婷五月 | 澳门永久av免费网站 | 国产成人精品必看 | 国产精品福利视频导航 | 狂野欧美激情性xxxx | 国产深夜福利视频在线 | 午夜精品一区二区三区的区别 | 一本加勒比波多野结衣 | 夜先锋av资源网站 | 波多野结衣aⅴ在线 | 青青草原综合久久大伊人精品 | 中文字幕av日韩精品一区二区 | 国产一区二区三区日韩精品 | 欧洲精品码一区二区三区免费看 | 亚洲欧洲无卡二区视頻 | 国产精品亚洲五月天高清 | 国产两女互慰高潮视频在线观看 | 亚洲精品国产品国语在线观看 | 东京热一精品无码av | 强伦人妻一区二区三区视频18 | 国产成人无码区免费内射一片色欲 | 波多野结衣av一区二区全免费观看 | 欧美午夜特黄aaaaaa片 | 亚洲熟妇色xxxxx欧美老妇 | 全球成人中文在线 | 中文字幕乱码中文乱码51精品 | 日韩人妻无码一区二区三区久久99 | 精品久久久久久亚洲精品 | 国产精品亚洲专区无码不卡 | 国产乱子伦视频在线播放 | 久久精品国产99精品亚洲 | 狂野欧美激情性xxxx | 中文字幕亚洲情99在线 | 国产人妻大战黑人第1集 | 国产精品久久久久久亚洲毛片 | 亚洲国产午夜精品理论片 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 中文字幕中文有码在线 | 色五月丁香五月综合五月 | 亚洲爆乳无码专区 | 日本精品人妻无码免费大全 | 久久99精品国产麻豆蜜芽 | 夜夜高潮次次欢爽av女 | 日本又色又爽又黄的a片18禁 | 扒开双腿疯狂进出爽爽爽视频 | 久久综合久久自在自线精品自 | 国产色视频一区二区三区 | av无码久久久久不卡免费网站 | 骚片av蜜桃精品一区 | 一本一道久久综合久久 | 亚洲热妇无码av在线播放 | 午夜福利不卡在线视频 | 久久99久久99精品中文字幕 | 老子影院午夜伦不卡 | 人人妻人人澡人人爽人人精品浪潮 | 99视频精品全部免费免费观看 | 精品久久久中文字幕人妻 | 国产精品久免费的黄网站 | 小sao货水好多真紧h无码视频 | 中文字幕亚洲情99在线 | 成人精品视频一区二区三区尤物 | 超碰97人人做人人爱少妇 | 久久综合激激的五月天 | 欧美精品免费观看二区 | 国产真实乱对白精彩久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 男人扒开女人内裤强吻桶进去 | 国产精品-区区久久久狼 | 无码人妻少妇伦在线电影 | 免费男性肉肉影院 | 国产莉萝无码av在线播放 | 1000部啪啪未满十八勿入下载 | 国产凸凹视频一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 国产黑色丝袜在线播放 | 九九在线中文字幕无码 | 青青青爽视频在线观看 | 久久综合网欧美色妞网 | 国产成人综合色在线观看网站 | 国产成人人人97超碰超爽8 | 欧美成人家庭影院 | 亚洲日本在线电影 | 中文字幕乱码人妻二区三区 | 妺妺窝人体色www婷婷 | 日本饥渴人妻欲求不满 | 中文字幕 人妻熟女 | 国产精品第一国产精品 | 中文字幕日韩精品一区二区三区 | 亚洲精品国产精品乱码不卡 | 少妇性l交大片 | 精品亚洲成av人在线观看 | 99久久精品无码一区二区毛片 | 又紧又大又爽精品一区二区 | 人妻尝试又大又粗久久 | 亚洲日本在线电影 | 亚洲a无码综合a国产av中文 | 无码午夜成人1000部免费视频 | 99国产精品白浆在线观看免费 | 国产精品18久久久久久麻辣 | 国产偷抇久久精品a片69 | 熟女少妇人妻中文字幕 | 午夜男女很黄的视频 | 全黄性性激高免费视频 | 天堂一区人妻无码 | 国产激情无码一区二区app | 国产亚洲精品久久久久久大师 | 国产真实夫妇视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 内射欧美老妇wbb | 日韩人妻无码一区二区三区久久99 | 红桃av一区二区三区在线无码av | 人人妻人人澡人人爽精品欧美 | 日韩在线不卡免费视频一区 | 亚洲国产精品毛片av不卡在线 | 亚洲精品一区二区三区婷婷月 | 国产精品无码成人午夜电影 | 内射老妇bbwx0c0ck | 免费看少妇作爱视频 | 国产精品香蕉在线观看 | 人妻少妇精品无码专区动漫 | 免费中文字幕日韩欧美 | 亚洲区欧美区综合区自拍区 | 日韩av无码一区二区三区不卡 | 少妇邻居内射在线 | 国产精品人人爽人人做我的可爱 | 少妇人妻大乳在线视频 | 亚洲精品国产精品乱码不卡 | 国产另类ts人妖一区二区 | 精品 日韩 国产 欧美 视频 | 亚洲中文字幕在线观看 | 国产口爆吞精在线视频 | 99久久精品日本一区二区免费 | 欧美精品免费观看二区 | 一本大道久久东京热无码av | 18禁黄网站男男禁片免费观看 | 精品乱码久久久久久久 | 亚洲精品一区二区三区大桥未久 | 成人无码精品一区二区三区 | 色综合视频一区二区三区 | 少妇被粗大的猛进出69影院 | 久久国产精品_国产精品 | 1000部夫妻午夜免费 | 欧美刺激性大交 | 久久人人爽人人爽人人片av高清 | 少妇激情av一区二区 | 欧美人与动性行为视频 | 中文字幕av伊人av无码av | 国产亚av手机在线观看 | 日日摸夜夜摸狠狠摸婷婷 | 正在播放老肥熟妇露脸 | 日日鲁鲁鲁夜夜爽爽狠狠 | 在线精品国产一区二区三区 | 伊人久久大香线蕉午夜 | 亚洲精品无码国产 | 亚洲 日韩 欧美 成人 在线观看 | 久久久www成人免费毛片 | 亚无码乱人伦一区二区 | 少妇激情av一区二区 | 99久久亚洲精品无码毛片 | 国产办公室秘书无码精品99 | 最近中文2019字幕第二页 | 白嫩日本少妇做爰 | 国产性生大片免费观看性 | 伊人久久大香线蕉午夜 | 国色天香社区在线视频 | 国产农村妇女高潮大叫 | 欧美精品免费观看二区 | 欧美猛少妇色xxxxx | 午夜免费福利小电影 | 日本大香伊一区二区三区 | 久久综合久久自在自线精品自 | 国产内射爽爽大片视频社区在线 | 国产人妻精品一区二区三区 | 精品成在人线av无码免费看 | 精品无码一区二区三区爱欲 | 国产人妖乱国产精品人妖 | 领导边摸边吃奶边做爽在线观看 | 国产美女精品一区二区三区 | 人妻aⅴ无码一区二区三区 | 国产av久久久久精东av | 日日碰狠狠丁香久燥 | 亚洲精品久久久久久久久久久 | 亚洲成av人影院在线观看 | 1000部啪啪未满十八勿入下载 | 精品国产一区二区三区av 性色 | 国产av无码专区亚洲a∨毛片 | 亚洲综合色区中文字幕 | 久久99精品久久久久久动态图 | 午夜福利试看120秒体验区 | 亚洲国精产品一二二线 | 午夜精品一区二区三区的区别 | 老熟女乱子伦 | 影音先锋中文字幕无码 | 67194成是人免费无码 | 亚洲国产成人a精品不卡在线 | 久久精品中文字幕大胸 | 亚洲 激情 小说 另类 欧美 | 成人精品一区二区三区中文字幕 | 久久综合色之久久综合 | 亚洲天堂2017无码中文 | 欧美xxxxx精品 | 久久视频在线观看精品 | 狠狠色丁香久久婷婷综合五月 | 亚洲va欧美va天堂v国产综合 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲国产成人av在线观看 | 国内丰满熟女出轨videos | 国产激情无码一区二区app | 亚洲综合无码一区二区三区 | 人妻互换免费中文字幕 | 狂野欧美性猛xxxx乱大交 | 中文字幕日产无线码一区 | 男女猛烈xx00免费视频试看 | 久久午夜无码鲁丝片秋霞 | 99久久人妻精品免费二区 | 色综合久久中文娱乐网 | 娇妻被黑人粗大高潮白浆 | 久久国产精品二国产精品 | 国产欧美精品一区二区三区 | 97夜夜澡人人双人人人喊 | 99久久精品无码一区二区毛片 | 女人高潮内射99精品 | 蜜桃av抽搐高潮一区二区 | 日本护士毛茸茸高潮 | 超碰97人人做人人爱少妇 | 亚洲区小说区激情区图片区 | 扒开双腿疯狂进出爽爽爽视频 | 狂野欧美性猛交免费视频 | 学生妹亚洲一区二区 | 国产xxx69麻豆国语对白 | 奇米影视7777久久精品 | 久久综合网欧美色妞网 | 亚洲欧美色中文字幕在线 | 少妇人妻av毛片在线看 | 色婷婷综合激情综在线播放 | 国产在线aaa片一区二区99 | 六月丁香婷婷色狠狠久久 | 国产精品久久久av久久久 | 久久久久久九九精品久 | 亚洲精品综合五月久久小说 | 少妇无套内谢久久久久 | 欧美成人高清在线播放 | 在线亚洲高清揄拍自拍一品区 | 国产舌乚八伦偷品w中 | 国内揄拍国内精品人妻 | 国产精品沙发午睡系列 | 玩弄少妇高潮ⅹxxxyw | 午夜肉伦伦影院 | 久久 国产 尿 小便 嘘嘘 | 久久久精品456亚洲影院 | 久久精品视频在线看15 | 国产精品国产自线拍免费软件 | 亚洲自偷精品视频自拍 | 俺去俺来也www色官网 | av无码久久久久不卡免费网站 | 国产特级毛片aaaaaa高潮流水 | 女人和拘做爰正片视频 | 欧美肥老太牲交大战 | 欧美zoozzooz性欧美 | 国产舌乚八伦偷品w中 | 97夜夜澡人人爽人人喊中国片 | 99精品无人区乱码1区2区3区 | 国内精品一区二区三区不卡 | 久久久久久久久蜜桃 | 97夜夜澡人人爽人人喊中国片 |