3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mongo数据库CRUD

發布時間:2025/3/17 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongo数据库CRUD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#準備

從官網下載合適的安裝包。這里以win10為例,一路next即可完成安裝。安裝完成后,進入這個目錄:

C:\Program Files\MongoDB\Server\4.0\bin\

在當前目錄打開PowerShell窗口,先啟動服務端:

.\mongod.exe

服務端默認在本地的27017端口運行。

啟動客戶端:

.\mongo.exe

將默認連接本地27017端口的服務端,并啟動mongo shell交互式命令行窗口。

如果想指定端口或者連接遠程的服務,可以在啟動時指定其他參數,比如:

.\mongo.exe --host www.example.com --port 28015

顯示當前使用的數據庫:

db # 默認數據庫是test

切換數據庫:

use <database>

你也可以切換到一個不存在的數據庫。因為當你往其中插入數據時,mongo將自動創建這個數據庫(或者集合),比如:

> use first switched to db first > db.test_coll.insertOne({x:1}) {"acknowledged" : true,"insertedId" : ObjectId("5c52cdf38410c398987c5c0e") }

上述的insertOne()操作將同時創建數據庫first和集合test_coll。

PyMongo

連接和指定數據庫

PyMongo是mongo的python驅動,安裝好之后我們連接MongoDB

方式一:指定主機和端口

import pymongo client = pymongo.MongoClient(host='localhost', port=27017)

方式二:mongodb連接字符串

client = pymongo.MongoClient('mongodb://localhost:27017/') db = db.test # 默認數據庫是test

插入數據

數據庫

默認數據庫是test,我們也可以指定其他數據庫,比如school

client = pymongo.MongoClient('mongodb://localhost:27017/') db = client.school # 或者 db = client['school']

注意,可以直接連接一個不存在的數據庫。mongo會在需要時(比如插入數據),創建這個數據庫。

集合

mongo中的集合(collection),類似于SQL中的表(table)。指定集合的操作,與指定數據庫的方式類似:

collection = db.teacher # 或者 collection = db['teacher']

注意,可以指定一個不存在的集合。mongo會在需要時(比如插入數據),創建這個集合。

文檔

MongoDB將數據存儲為BSON文檔(BSON是JSON文檔的二進制表示,但是包含更多的數據類型)。文檔由字段(field)和值(value)組成,具有如下結構:

{field1: value1,field2: value2,field3: value3,...fieldN: valueN }

字段名是字符串,具有如下約束條件:

  • _id是保留字段,用作主鍵,必須保證唯一且不可以變(因此不能是數組)
  • 字段名不可包含null字符
  • 不要以$或.開頭
  • 字段名不可重復

在PyMongo中,使用python的字典表示文檔,例如下面字典可以用來表示一篇博文:

>>> import datetime >>> post = {"author": "Mike", ... "text": "My first blog post!", ... "tags": ["mongodb", "python", "pymongo"], ... "date": datetime.datetime.utcnow()}

值得注意的是,文檔可以包含python中的原生類型(比如datetime.datetime實例),PyMongo會將其自動轉化為合適的BSON類型。

MongoDB使用.點來訪問數組或嵌套文檔中的元素:

{...contribs: [ "Turing machine", "Turing test", "Turingery" ],... }

如果要訪問contribs字段的第三個元素,使用contribs.2

{...name: { first: "Alan", last: "Turing" },contact: { phone: { type: "cell", number: "111-222-3333" } },... }

如果要訪問name字段的last字段,使用name.last

文檔的限制

  • BSON文檔的最大大小是16MB
  • 字段的順序:MongoDB保持寫操作時的字段順序,除了以下情況:
    • _id字段總是文檔的第一個字段
    • 重新命名字段等更新操作可能影響字段排序
  • _id字段:
    • 如果插入文檔沒有指定_id字段,MongoDB會自動創建ObjectId對象作為該字段的值
    • 創建集合(collection)時,MongoDB默認為該字段創建唯一索引
    • 該字段的值通常是:
      • ObjectId
      • 自增數字
      • 代碼生成的UUID

插入數據

MongoDB的所有寫操作,在當個文檔上是原子性的。插入文檔時,如果集合不存在,MongoDB會自動創建。

db.collection.insert()

下面我們往teacher這個集合中插入一條數據

# 數據用字典結構 teacher = {'name': 'Sven','gender': 'male','major': 'Math' }# 插入成功后,返回該條數據的 _id res = db.teacher.insert(teacher) # 5c53c429bddaf0ac186d935b

插入多條數據

teacher1 = {'name': 'Sylvia','gender': 'female','major': 'Deutsch' }teacher2 = {'name': 'Lolle','gender': 'female','major': 'Geschichte' }res = db.teacher.insert([teacher1, teacher2]) # 返回_id的列表 # [ObjectId('5c53c628bddaf0b2bc028a73'), ObjectId('5c53c628bddaf0b2bc028a74')]

以上我們插入單條和多條都用insert方法,更推薦的方式是使用insert_one()和insert_many()

db.collection.insert_one()

插入單條數據

res = db.inventory.insert_one({"item": "canvas","qty": 100,"tags": ["cotton"],"size": {"h": 28, "w": 35.5, "uom": "cm"}})print(res) # <pymongo.results.InsertOneResult object at 0x0332EF58> print(res.inserted_id) # 5c53c7a8bddaf0208cd858f5

db.collection.insert_many()

插入多條數據

res = db.inventory.insert_many([{"item": "journal","qty": 25,"tags": ["blank", "red"],"size": {"h": 14, "w": 21, "uom": "cm"}},{"item": "mat","qty": 85,"tags": ["gray"],"size": {"h": 27.9, "w": 35.5, "uom": "cm"}},{"item": "mousepad","qty": 25,"tags": ["gel", "blue"],"size": {"h": 19, "w": 22.85, "uom": "cm"}}])print(res) # <pymongo.results.InsertManyResult object at 0x031C3F30> print(res.inserted_ids) # [ObjectId('5c53e48bbddaf04c44880d70'), ObjectId('5c53e48bbddaf04c44880d71'), ObjectId('5c53e48bbddaf04c44880d72')]

插入數據時,如果指定_id的值,那么該值不能和集合中已有文檔的_id重復。

查詢數據

查詢使用db.collection.find()方法。

首先,準備一些原始數據

import pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test1db.inventory.insert_many([{"item": "journal","qty": 25,"size": {"h": 14, "w": 21, "uom": "cm"},"status": "A"},{"item": "notebook","qty": 50,"size": {"h": 8.5, "w": 11, "uom": "in"},"status": "A"},{"item": "paper","qty": 100,"size": {"h": 8.5, "w": 11, "uom": "in"},"status": "D"},{"item": "planner","qty": 75, "size": {"h": 22.85, "w": 30, "uom": "cm"},"status": "D"},{"item": "postcard","qty": 45,"size": {"h": 10, "w": 15.25, "uom": "cm"},"status": "A"}])

查詢集合中的所有文檔:find()

傳入一個空文檔作為find的查詢條件即可

cursor = db.inventory.find({})

以上操作相當于SQL中的:

SELECT * FROM inventory

find方法返回一個Cursor實例,遍歷它即可訪問所有文檔:

docs = [doc for doc in cursor] """ [{'status': 'A', 'item': 'journal', ...}, ...] """

查詢單個文檔:find_one()

find_one()方法返回滿足查詢條件的一個文檔,或者返回None(如果沒有匹配的結果)。適用于:

  • 你知道有且只有一個匹配的文檔,比如通過ObjectId進行查詢
  • 你只需要第一個匹配的文檔

根據ObjectID對象查詢

注意,ObjectId對象和它的字符串表現是完全不同的,后者不可直接用于查詢

import pymongo import datetimeclient = pymongo.MongoClient(host='localhost',port=27017,retryWrites=True ) db = client.test8blog = {"author": "Ayhan","text": "My first blog post!","tags": ["mongodb", "python", "pymongo"],"date": datetime.datetime.utcnow()}post_id = db.posts.insert_one(blog).inserted_id # 返回ObjectId對象 print(post_id) # 5c948354bddaf02674a54faares1 = db.posts.find_one({'_id': post_id}) # 通過ObjectId對象查詢 print(res1) """ {'_id': ObjectId('5c948354bddaf02674a54faa'),'author': 'Ayhan','text': 'My first blog post!','tags': ['mongodb', 'python', 'pymongo'],'date': datetime.datetime(2019, 3, 22, 6, 40, 20, 164000) } """res2 = db.posts.find_one({'_id': str(post_id)}) # 通過ObjectId對象的字符串表現進行查詢 print(res2) # None

如果想通過ObjectId的字符串進行查詢,需要將字符串轉為對象:

from bson.objectid import ObjectIdobject_id_str = '5c948354bddaf02674a54faa' db.posts.find_one({'_id': ObjectId(object_id_str)})

指定相等條件

如果要指定相等條件,可以給find方法傳入文檔查詢條件:

{ <field1>: <value1>, ... }

比如,下面的示例從inventory集合中查詢所有符合status等于D的文檔:

cursor = db.inventory.find({'status': 'D'})

上述操作相當于SQL中的

SELECT * FROM inventory WHERE status = "D"

使用查詢運算符

文檔查詢條件:

{ <field1>: { <operator1>: <value1> }, ... }

下面的示例從inventory集合中查詢所有status等于A或D的文檔:

cursor = db.inventory.find({'status': {'$in': ['A', 'D']}})

以上查詢相當于SQL中的:

SELECT * FROM inventory WHERE status in ("A", "D")

查詢運算符一覽,可查看官方文檔:https://docs.mongodb.com/manual/reference/operator/query/#projection-operators

AND查詢

復合查詢可以指定多個字段。下面的示例從inventory集合中查詢所有status等于A,并且qty小于30的文檔:

cursor = db.inventory.find({'status': 'A', 'qty': {'$lt': 30}})

以上操作相當于SQL中的:

SELECT * FROM inventory WHERE status = "A" AND qty < 30

OR查詢

使用$or運算符,可以進行邏輯或查詢:

cursor = db.inventory.find({'$or': [{'status': 'A'}, {'qty': {'$lt': 30}}]} )

以上操作相當于SQL中的:

SELECT * FROM inventory WHERE status = "A" OR qty < 3

AND 和 OR 查詢

cursor = db.inventory.find({'status': 'A','$or': [{'qty': {'$lt': 30}}, {'item': {'$regex': '^p'}}] })

以上操作相當于SQL中的:

SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")

嵌套查詢

適用于文檔中嵌套文檔的查詢。下面先填充數據:

import pymongo from bson.son import SONclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test2db.inventory.insert_many([{"item": "journal","qty": 25,"size": SON([("h", 14), ("w", 21), ("uom", "cm")]),"status": "A"},{"item": "notebook","qty": 50,"size": SON([("h", 8.5), ("w", 11), ("uom", "in")]),"status": "A"},{"item": "paper","qty": 100,"size": SON([("h", 8.5), ("w", 11), ("uom", "in")]),"status": "D"},{"item": "planner","qty": 75,"size": SON([("h", 22.85), ("w", 30), ("uom", "cm")]),"status": "D"},{"item": "postcard","qty": 45,"size": SON([("h", 10), ("w", 15.25), ("uom", "cm")]),"status": "A"}])

注意,子文檔鍵的順序在這些示例中很重要,因此這里的子文檔使用bson.son.SON的實例,而不是使用python的字典形式。

插入后,數據結構如下:

[{ // 文檔"_id" : ObjectId("5c540556bddaf0b00803d342"),"status" : "A","item" : "journal","size" : { // 子文檔(嵌套文檔)"h" : 14,"w" : 21,"uom" : "cm"},"qty" : 25} ]

根據子文檔進行查詢

如果某個字段是一個子文檔,要為該字段指定相等條件時,使用如下文檔查詢條件:{ <field>: <value> },其中<value>是作為匹配條件的子文檔。

下面的示例從inventory集合中查詢size字段等于子文檔{ h: 14, w:21, uom: "cm" }的文檔

cursor = db.inventory.find({'size': SON([("h", 14), ("w", 21), ("uom", "cm")])} ) """ [{u 'status': u 'A',u 'item': u 'journal',u '_id': ObjectId('5c540556bddaf0b00803d342'),u 'qty': 25,u 'size': {u 'h': 14,u 'uom': u 'cm',u 'w': 21} }] """

注意:

根據子文檔進行查詢時,子文檔必須完全匹配,包括字段的順序。也就也是說,下面的查詢無法匹配任何結果:

cursor = db.inventory.find({"size": SON([("w", 21), ("h", 14), ("uom", "cm")])} ) # []

根據嵌套字段進行查詢

通過子文檔的字段進行查詢,需要使用.操作:field.nestedField

# 查詢 size.uom 等于 in 的文檔 cursor = db.inventory.find({'size.uom': 'in'} ) """ [{u 'status': u 'A',u 'item': u 'notebook',u '_id': ObjectId('5c540556bddaf0b00803d343'),u 'qty': 50,u 'size': {u 'h': 8.5,u 'uom': u 'in',u 'w': 11} }, {u 'status': u 'D',u 'item': u 'paper',u '_id': ObjectId('5c540556bddaf0b00803d344'),u 'qty': 100,u 'size': {u 'h': 8.5,u 'uom': u 'in',u 'w': 11} }] """ # 查詢 size.h 小于 10 的文檔 cursor = db.inventory.find({'size.h': {'$lt': 10}} ) """ [{u 'status': u 'A',u 'item': u 'notebook',u '_id': ObjectId('5c540556bddaf0b00803d343'),u 'qty': 50,u 'size': {u 'h': 8.5,u 'uom': u 'in',u 'w': 11} }, {u 'status': u 'D',u 'item': u 'paper',u '_id': ObjectId('5c540556bddaf0b00803d344'),u 'qty': 100,u 'size': {u 'h': 8.5,u 'uom': u 'in',u 'w': 11} }] """ # 查詢 size.h 小于 15,size.uom 等于 in, 并且status 等于D的文檔 cursor = db.inventory.find({'size.h': {'$lt': 15}, 'size.uom': 'in', 'status': 'D'} ) """ [{u 'status': u 'D',u 'item': u 'paper',u '_id': ObjectId('5c540556bddaf0b00803d344'),u 'qty': 100,u 'size': {u 'h': 8.5,u 'uom': u 'in',u 'w': 11} }] """

數組查詢

首先準備數據:

import pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test3db.inventory.insert_many([{"item": "journal","qty": 25,"tags": ["blank", "red"],"dim_cm": [14, 21]},{"item": "notebook","qty": 50,"tags": ["red", "blank"],"dim_cm": [14, 21]},{"item": "paper","qty": 100,"tags": ["red", "blank", "plain"],"dim_cm": [14, 21]},{"item": "planner","qty": 75,"tags": ["blank", "red"],"dim_cm": [22.85, 30]},{"item": "postcard","qty": 45,"tags": ["blue"],"dim_cm": [10, 15.25]},{"item": "mac","qty": 12,"tags": ["silver", "golden"],"dim_cm": [25, 34]} ])

查詢整個數組

根據數組指定相等條件時,使用文檔查詢條件:{ <field>: <value> },其中<value>就是要進行匹配的數組本身,包括其中元素的順序。

# 查詢tags字段的值等于['red', 'blank']的文檔 cursor = db.inventory.find({'tags': ['red', 'blank']} ) """ [{u 'item': u 'notebook',u '_id': ObjectId('5c54138fbddaf0a1e075f0ff'),u 'qty': 50,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank'] }] """

當然,如果你希望查詢數組中包含red和blank元素(不關心元素順序,或者是否有多余元素)的所有文檔,可以使用$all操作符:

cursor = db.inventory.find({'tags': {'$all': ['red', 'blank']}} ) """ [{u 'item': u 'journal',u '_id': ObjectId('5c54138fbddaf0a1e075f0fe'),u 'qty': 25,u 'dim_cm': [14, 21],u 'tags': [u 'blank', u 'red'] }, {u 'item': u 'notebook',u '_id': ObjectId('5c54138fbddaf0a1e075f0ff'),u 'qty': 50,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank'] }, {u 'item': u 'paper',u '_id': ObjectId('5c54138fbddaf0a1e075f100'),u 'qty': 100,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank', u 'plain'] }, {u 'item': u 'planner',u '_id': ObjectId('5c54138fbddaf0a1e075f101'),u 'qty': 75,u 'dim_cm': [22.85, 30],u 'tags': [u 'blank', u 'red'] }] """

查詢數組中的某個元素(指定單個查詢條件)

查詢數組中包含某個元素的文檔時,使用{ <field>: <value> },其中<value>是數組中的元素

# 查詢tags中包含red的文檔 cursor = db.inventory.find({'tags': 'red'} ) """ [{u 'item': u 'journal',u '_id': ObjectId('5c54138fbddaf0a1e075f0fe'),u 'qty': 25,u 'dim_cm': [14, 21],u 'tags': [u 'blank', u 'red'] }, {u 'item': u 'notebook',u '_id': ObjectId('5c54138fbddaf0a1e075f0ff'),u 'qty': 50,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank'] }, {u 'item': u 'paper',u '_id': ObjectId('5c54138fbddaf0a1e075f100'),u 'qty': 100,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank', u 'plain'] }, {u 'item': u 'planner',u '_id': ObjectId('5c54138fbddaf0a1e075f101'),u 'qty': 75,u 'dim_cm': [22.85, 30],u 'tags': [u 'blank', u 'red'] }] """

如果要給數組元素指定多個條件,可以在查詢條件中使用查詢運算符:{<array filed>: {<operator1>: <value1>, ...},具體如下個部分

為數組內的元素指定多個查詢條件

當為數組內的元素指定多個條件時,你可以指定要么單個元素滿足這些條件,或者數組內元素的任意組合滿足這些條件。

# 查詢dim_cm數組中元素的組合滿足查詢條件: # 一個元素大于15,另一個元素小于20,或者一個元素滿足兩種條件的的文檔 cursor = db.inventory.find({'dim_cm': {'$gt': 15, '$lt': 20}} ) """ [{u 'item': u 'journal',u '_id': ObjectId('5c54138fbddaf0a1e075f0fe'),u 'qty': 25,u 'dim_cm': [14, 21],u 'tags': [u 'blank', u 'red'] }, {u 'item': u 'notebook',u '_id': ObjectId('5c54138fbddaf0a1e075f0ff'),u 'qty': 50,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank'] }, {u 'item': u 'paper',u '_id': ObjectId('5c54138fbddaf0a1e075f100'),u 'qty': 100,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank', u 'plain'] }, {u 'item': u 'postcard',u '_id': ObjectId('5c54138fbddaf0a1e075f102'),u 'qty': 45,u 'dim_cm': [10, 15.25],u 'tags': [u 'blue'] }] 注意:"dim_cm": [25, 34]的元素并不會被過濾出來。 """
一個數組元素同時滿足多個條件

使用$elemMatch運算符,指定多個條件,只要有1個元素同時滿足這些條件即可。

# 查詢dim_cm數組中,至少有一個大于15且小于20的元素的文檔 cursor = db.inventory.find({'dim_cm': {'$elemMatch': {'$gt': 15, '$lt': 20}}} ) """ [{u 'item': u 'postcard',u '_id': ObjectId('5c8ba39bbddaf00ea0365693'),u 'qty': 45,u 'dim_cm': [10, 15.25],u 'tags': [u 'blue'] }] 15.25 滿足既大于15,又小于20的條件 """
元素的組合滿足復合查詢條件
# 查詢dim_cm數組中元素的組合滿足查詢條件: # 存在某些元素大于15,且某些元素小于20,或者一個元素滿足兩種條件的的文檔 # (若instock下的所有元素的組合都不能滿足以上條件,則無法被過濾出來) # 注意:"dim_cm": [25, 34]的元素并不會被過濾出來。 cursor = db.inventory.find({'dim_cm': {'$gt': 15, '$lt': 20}} ) """ [{u 'item': u 'journal',u '_id': ObjectId('5c54138fbddaf0a1e075f0fe'),u 'qty': 25,u 'dim_cm': [14, 21],u 'tags': [u 'blank', u 'red'] }, {u 'item': u 'notebook',u '_id': ObjectId('5c54138fbddaf0a1e075f0ff'),u 'qty': 50,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank'] }, {u 'item': u 'paper',u '_id': ObjectId('5c54138fbddaf0a1e075f100'),u 'qty': 100,u 'dim_cm': [14, 21],u 'tags': [u 'red', u 'blank', u 'plain'] }, {u 'item': u 'postcard',u '_id': ObjectId('5c54138fbddaf0a1e075f102'),u 'qty': 45,u 'dim_cm': [10, 15.25],u 'tags': [u 'blue'] }] """
通過數組的索引查詢元素

使用.點,根據數組中指定索引的元素進行查詢。索引從0開始。

# 根據dim_cm數組的第一個元素,滿足大于20,且小于25進行查詢 cursor = db.inventory.find({'dim_cm.0': {'$gt': 20, '$lt': 25}} ) """ [{u 'item': u 'planner',u '_id': ObjectId('5c8ba39bbddaf00ea0365692'),u 'qty': 75,u 'dim_cm': [22.85, 30],u 'tags': [u 'blank', u 'red'] }] """

包含子文檔的數組

準備數據:

import pymongo from bson.son import SONclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test4db.inventory.insert_many([{"item": "journal","instock": [SON([("warehouse", "A"), ("qty", 5)]),SON([("warehouse", "C"), ("qty", 15)])]},{"item": "notebook","instock": [SON([("warehouse", "C"), ("qty", 5)])]},{"item": "paper","instock": [SON([("warehouse", "A"), ("qty", 60)]),SON([("warehouse", "B"), ("qty", 15)])]},{"item": "planner","instock": [SON([("warehouse", "A"), ("qty", 40)]),SON([("warehouse", "B"), ("qty", 5)])]},{"item": "postcard","instock": [SON([("warehouse", "B"), ("qty", 15)]),SON([("warehouse", "C"), ("qty", 35)])]}])

根據子文檔進行匹配

# instock數組的某個元素能匹配指定的文檔 cursor = db.inventory.find({'instock': SON([('warehouse', 'A'), ('qty', 5)]) })""" [{u 'item': u 'journal',u '_id': ObjectId('5c8c5f4abddaf049404c5e89'),u 'instock': [{ // 該元素能夠匹配指定的文檔條件u 'warehouse': u 'A',u 'qty': 5}, {u 'warehouse': u 'C',u 'qty': 15}] }] """

根據文檔進行匹配是嚴格匹配,包括文檔的順序,因此如下查詢無法匹配任何結果:

cursor = db.inventory.find({'instock': SON([('qty', 5), ('warehouse', 'A')]) })

對子文檔的 某個字段指定單個查詢條件

對所有子文檔內的某個字段指定一個查詢條件
# 查詢instock數組內至少包含一個子文檔,其滿足qty字段小于等于10的所有文檔 cursor = db.inventory.find({'instock.qty': {'$lte': 10} }) """ [{u 'item': u 'journal',u '_id': ObjectId('5c8c5f4abddaf049404c5e89'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 5}, {u 'warehouse': u 'C',u 'qty': 15}] }, {u 'item': u 'notebook',u '_id': ObjectId('5c8c5f4abddaf049404c5e8a'),u 'instock': [{u 'warehouse': u 'C',u 'qty': 5}] }, {u 'item': u 'planner',u '_id': ObjectId('5c8c5f4abddaf049404c5e8c'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 40}, {u 'warehouse': u 'B',u 'qty': 5}] }] """
使用數組索引來指定子文檔的某個字段進行查詢
# 查詢instock數組的第一個子文檔的qty字段滿足大于20的所有文檔 cursor = db.inventory.find({'instock.0.qty': {'$gt': 20} }) """ [{u 'item': u 'paper',u '_id': ObjectId('5c8c5f4abddaf049404c5e8b'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 60}, {u 'warehouse': u 'B',u 'qty': 15}] }, {u 'item': u 'planner',u '_id': ObjectId('5c8c5f4abddaf049404c5e8c'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 40}, {u 'warehouse': u 'B',u 'qty': 5}] }] """

對子文檔指定多個字段查詢條件

當對子文檔指定多個字段查詢條件時,你可以指定要么單個子文檔滿足這些條件,或者任意子文檔的組合滿足條件(類似上面的數組內元素指定多個條件)

單個子文檔滿足多個字段的查詢條件

使用$elemMatch運算符對包含子文檔的數組指定多個條件,至少有一個子文檔能滿足這些條件即可

# 查詢instock數組至少包含一個子文檔同時滿足qty等于5,warehouse等于4的所有文檔 cursor = db.inventory.find({'instock': {'$elemMatch': {'qty': 5, 'warehouse': 'A'}} })""" [{u 'item': u 'journal',u '_id': ObjectId('5c8c5f4abddaf049404c5e89'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 5}, {u 'warehouse': u 'C',u 'qty': 15}] }] """ # 查詢instock數組至少包含一個子文檔,其qty大于30,小于等于50的所有文檔 cursor = db.inventory.find({'instock': {'$elemMatch': {'qty': {'$gt': 30, '$lte': 50}}}} ) """ [{u 'item': u 'planner',u '_id': ObjectId('5c8c5f4abddaf049404c5e8c'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 40}, {u 'warehouse': u 'B',u 'qty': 5}] }, {u 'item': u 'postcard',u '_id': ObjectId('5c8c5f4abddaf049404c5e8d'),u 'instock': [{u 'warehouse': u 'B',u 'qty': 15}, {u 'warehouse': u 'C',u 'qty': 35}] }] """
子文檔組合滿足復合查詢條件

如果復合查詢不使用$elemMatch運算符,那么查詢將選擇那些數組包含任何能滿足條件的組合。比如:

# 查詢instock下的某些子文檔的qty字段大于30,且某些子文檔的qty字段小于等于50,(或同時滿足)的所有文檔 # (若instock下的所有文檔的組合都不能滿足以上條件,則無法被過濾出來) cursor = db.inventory.find({'instock.qty': {'$gt': 30, '$lte': 50}} ) """ [{u 'item': u 'paper',u '_id': ObjectId('5c8c5f4abddaf049404c5e8b'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 60}, {u 'warehouse': u 'B',u 'qty': 15}] }, {u 'item': u 'planner',u '_id': ObjectId('5c8c5f4abddaf049404c5e8c'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 40}, {u 'warehouse': u 'B',u 'qty': 5}] }, {u 'item': u 'postcard',u '_id': ObjectId('5c8c5f4abddaf049404c5e8d'),u 'instock': [{u 'warehouse': u 'B',u 'qty': 15}, {u 'warehouse': u 'C',u 'qty': 35}] }] """ # 查詢instock下的某些子文檔的qty字段等于5,且某些子文檔的warehouse等于A,(或同時滿足)的所有文檔 cursor = db.inventory.find({'instock.qty': 5, 'instock.warehouse': 'A' }) """ [{u 'item': u 'journal',u '_id': ObjectId('5c8c5f4abddaf049404c5e89'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 5}, {u 'warehouse': u 'C',u 'qty': 15}] }, {u 'item': u 'planner',u '_id': ObjectId('5c8c5f4abddaf049404c5e8c'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 40}, {u 'warehouse': u 'B',u 'qty': 5}] }] """

返回字段

默認情況下,MongoDB的查詢返回匹配文檔的所有字段,如果想限制返回數據的大小,可以使用projection文檔(投影文檔)來指定返回的字段。

準備數據:

import pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test5db.inventory.insert_many([{"item": "journal","status": "A","size": {"h": 14, "w": 21, "uom": "cm"},"instock": [{"warehouse": "A", "qty": 5}]},{"item": "notebook","status": "A","size": {"h": 8.5, "w": 11, "uom": "in"},"instock": [{"warehouse": "C", "qty": 5}]},{"item": "paper","status": "D","size": {"h": 8.5, "w": 11, "uom": "in"},"instock": [{"warehouse": "A", "qty": 60}]},{"item": "planner","status": "D","size": {"h": 22.85, "w": 30, "uom": "cm"},"instock": [{"warehouse": "A", "qty": 40}]},{"item": "postcard","status": "A","size": {"h": 10, "w": 15.25, "uom": "cm"},"instock": [{"warehouse": "B", "qty": 15},{"warehouse": "C", "qty": 35}]}])

我們看以下查詢:

cursor = db.inventory.find({"status": "A"})

該查詢相當于SQL的:

SELECT * FROM inventory WHERE status = 'A'

只返回指定字段和 _id 字段

在投影文檔中,將需要的字段設置為1,就可以指定查詢后返回的字段。比如:

cursor = db.inventory.find( # find的第二個參數是投影文檔{'status': 'A'}, {'item': 1, 'status': 1} )""" [{u 'status': u 'A',u 'item': u 'journal',u '_id': ObjectId('5c8ca21dbddaf046e0efdd49') }, {u 'status': u 'A',u 'item': u 'notebook',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4a') }, {u 'status': u 'A',u 'item': u 'postcard',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4d') }] """

上述查詢相當于SQL:

SELECT _id, item, status from inventory WHERE status = "A"

丟棄 _id 字段

_id字段會默認返回,如果不需要,可以在投影文檔中指定 _id: 0

cursor = db.inventory.find({'status': 'A'}, {'item': 1, 'status': 1, '_id': 0} )

返回所有字段,排除某些字段

將要排除的字段在投影文檔中設置為0即可

cursor = db.inventory.find({'status': 'A'}, {'status': 0, 'instock': 0} )""" [{u 'item': u 'journal',u '_id': ObjectId('5c8ca21dbddaf046e0efdd49'),u 'size': {u 'h': 14,u 'w': 21,u 'uom': u 'cm'} }, {u 'item': u 'notebook',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4a'),u 'size': {u 'h': 8.5,u 'w': 11,u 'uom': u 'in'} }, {u 'item': u 'postcard',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4d'),u 'size': {u 'h': 10,u 'w': 15.25,u 'uom': u 'cm'} }] """

注意

除了_id字段,projection中不能既有指定字段,又有排除字段。下面的查詢會報錯:

cursor = db.inventory.find({'status': 'A'}, {'status': 0, 'instock': 0, 'item': 1} )""" pymongo.errors.OperationFailure: Projection cannot have a mix of inclusion and exclusion. """

返回子文檔中的指定字段

通過.點標記指定嵌套字段并設置為1即可,比如

# 查詢所有文檔,并且只返回size子文檔中的uom字段 cursor = db.inventory.find({}, {'item': 1, 'status': 1, 'size.uom': 1} )""" [{u 'status': u 'A',u 'item': u 'journal',u '_id': ObjectId('5c8ca21dbddaf046e0efdd49'),u 'size': {u 'uom': u 'cm'} }, // ... {u 'status': u 'A',u 'item': u 'postcard',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4d'),u 'size': {u 'uom': u 'cm'} }] """

丟棄子文檔中的指定字段

通過.點標記指定嵌套字段并設置為0即可,比如

# 查詢satus等于D的所有文檔,且子文檔不返回uom字段 cursor = db.inventory.find({'status': 'D'}, {'size.uom': 0} )""" [{u 'status': u 'D',u 'item': u 'paper',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4b'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 60}],u 'size': {u 'h': 8.5,u 'w': 11} }, {u 'status': u 'D',u 'item': u 'planner',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4c'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 40}],u 'size': {u 'h': 22.85,u 'w': 30} }] """

投射數組內的子文檔指定字段

使用.標記來投影數組內子文檔的字段即可,比如

cursor = db.inventory.find({'status': 'D'}, {'item': 1, 'status': 1, 'instock.qty': 1} )""" [{u 'status': u 'D',u 'item': u 'paper',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4b'),u 'instock': [{u 'qty': 60}] }, {u 'status': u 'D',u 'item': u 'planner',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4c'),u 'instock': [{u 'qty': 40}] }] """

投射指定的數組元素

MongoDB為包含數組的字段提供了一些運算符,來操作數組:

$elemMatch, $slice, $

下面使用切片運算符$slice來返回數組中的最后一個元素:

cursor = db.inventory.find({'status': 'A'},{'item': 1, 'status': 1, 'instock': {'$slice': -1}} )""" [{u 'status': u 'A',u 'item': u 'journal',u '_id': ObjectId('5c8ca21dbddaf046e0efdd49'),u 'instock': [{u 'warehouse': u 'A',u 'qty': 5}] }, {u 'status': u 'A',u 'item': u 'notebook',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4a'),u 'instock': [{u 'warehouse': u 'C',u 'qty': 5}] }, {u 'status': u 'A',u 'item': u 'postcard',u '_id': ObjectId('5c8ca21dbddaf046e0efdd4d'),u 'instock': [{u 'warehouse': u 'C',u 'qty': 35}] }] """

查詢Null或缺失字段

MongoDB中的不同查詢運算符對null值的處理也不同。

準備數據:

import pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test6# 插入兩個文檔,一個item為空值,一個item字段缺失 db.inventory.insert_many([{"_id": 1, "item": None}, {"_id": 2}])

相等性過濾

{'item': None}查詢將匹配要么item字段為空值,要么不包含item字段的文檔:

cursor = db.inventory.find({'item': None} )""" [{u 'item': None,u '_id': 1 }, {u '_id': 2 }] """

類型檢查

{'item': {'$type': 10}}查詢只匹配item為空值的文檔。空值的類型碼是10

cursor = db.inventory.find({'item': {'$type': 10}} )""" [{u'item': None, u'_id': 1}] """

存在檢查

{'item': {'$exists': False}}查詢只匹配不包含item字段的文檔

cursor = db.inventory.find({'item': {'$exists': False}} )""" [{u'_id': 2}] """

更新文檔

更新文檔主要使用如下幾個方法:

  • db.collection.update_one() 最多更新一個文檔(即使匹配出多個)
  • db.collection.update_many() 更新所有匹配的文檔
  • db.collection.replace_one()最多替換一個文檔(即使匹配出過個)
  • db.collection.update()
    • 如果匹配處單個文檔,則進行更新或替換
    • 如果匹配出多個文檔,則更新這些文檔

準備數據:

db.inventory.insert_many([{"item": "canvas","qty": 100,"size": {"h": 28, "w": 35.5, "uom": "cm"},"status": "A"},{"item": "journal","qty": 25,"size": {"h": 14, "w": 21, "uom": "cm"},"status": "A"},{"item": "mat","qty": 85,"size": {"h": 27.9, "w": 35.5, "uom": "cm"},"status": "A"},{"item": "mousepad","qty": 25,"size": {"h": 19, "w": 22.85, "uom": "cm"},"status": "P"},{"item": "notebook","qty": 50,"size": {"h": 8.5, "w": 11, "uom": "in"},"status": "P"},{"item": "paper","qty": 100,"size": {"h": 8.5, "w": 11, "uom": "in"},"status": "D"},{"item": "planner","qty": 75,"size": {"h": 22.85, "w": 30, "uom": "cm"},"status": "D"},{"item": "postcard","qty": 45,"size": {"h": 10, "w": 15.25, "uom": "cm"},"status": "A"},{"item": "sketchbook","qty": 80,"size": {"h": 14, "w": 21, "uom": "cm"},"status": "A"},{"item": "sketch pad","qty": 95,"size": {"h": 22.85, "w": 30.5, "uom": "cm"},"status": "A"}])

更新集合中的文檔

如果要修改字段的值,可以使用更新運算符,比如$set,基本格式如下:

{<更新運算符>: {<字段1>: <1>, ...},<更新運算符>: {<字段2>: <2>, ...}, }

更新單個文檔:update_one()

res = db.inventory.update_one({'item': 'paper'}, # filter{ # update'$set': {'size.uom': 'cm','status': 'P'},'$currentDate': {'lastModified': True # 新增lastModified字段,值是當前時間}} )print(res) # <pymongo.results.UpdateResult object at 0x0000024A22FFB3C8> print(res.matched_count) # 1 print(res.modified_count) # 1cursor = db.inventory.find({'item': 'paper'}) docs = [doc for doc in cursor] print(docs) """ [{'_id': ObjectId('5c8f8dcfbddaf03aa4b6a409'),'item': 'paper','qty': 100,'size': {'h': 8.5,'w': 11,'uom': 'cm'},'status': 'P','lastModified': datetime.datetime(2019, 3, 18, 12, 36, 45, 391000) }] """

更新多個文檔:update_many()

# 更新qty小于50的文檔 res = db.inventory.update_many({'qty': {'$lt': 50}}, # filter{ # update'$set': {'size.uom': 'in', 'status': 'P'},'$currentDate': {'lastModified': True}} )print(res) # <pymongo.results.UpdateResult object at 0x0000014249CF7488> print(res.matched_count) # 3 print(res.modified_count) # 3cursor = db.inventory.find({'qty': {'$lt': 50}}) docs = [doc for doc in cursor] print(docs) """ [{'_id': ObjectId('5c8f8dcfbddaf03aa4b6a405'),'item': 'journal','qty': 25,'size': {'h': 14,'w': 21,'uom': 'in'},'status': 'P','lastModified': datetime.datetime(2019, 3, 19, 12, 26, 33, 410000) }, {'_id': ObjectId('5c8f8dcfbddaf03aa4b6a407'),'item': 'mousepad','qty': 25,'size': {'h': 19,'w': 22.85,'uom': 'in'},'status': 'P','lastModified': datetime.datetime(2019, 3, 19, 12, 26, 33, 413000) }, {'_id': ObjectId('5c8f8dcfbddaf03aa4b6a40b'),'item': 'postcard','qty': 45,'size': {'h': 10,'w': 15.25,'uom': 'in'},'status': 'P','lastModified': datetime.datetime(2019, 3, 19, 12, 26, 33, 414000) }] """

替換文檔:replace_one()

如果要替換整個文檔的內容(除了_id字段),只需傳入一個新的文檔,作為replace_one()的第二個參數即可。替換的文檔只能包含鍵值對,不能巴博涵其他表達式,比如更新運算符。替換的文檔可以和原文的的字段不同,由于_id不可變,你可以省略_id字段(當然,如果你非要在替換文檔中包含_id字段,那么必須給出與原文檔一樣的值)

# 替換滿足篩選條件的第一個文檔 res = db.inventory.replace_one({'item': 'paper'}, # filter{'item': 'paper', # replacement_doc'instock': [{"warehouse": "A", "qty": 60},{"warehouse": "B", "qty": 40}]} )print(res) # <pymongo.results.UpdateResult object at 0x000001AD62170448> print(res.matched_count) # 1 print(res.modified_count) # 1cursor = db.inventory.find({'item': 'paper'}) docs = [doc for doc in cursor] print(docs) """ [{'_id': ObjectId('5c8f8dcfbddaf03aa4b6a409'),'item': 'paper','instock': [{'warehouse': 'A','qty': 60}, {'warehouse': 'B','qty': 40}] }] """

更新行為

原子性

MongoDB的所有寫操作在單個文檔上都是原子性的。

_id字段

一旦設置,該字段的值不可修改,也不能被替換。

字段順序

MongoDB保持寫操作中文檔的順序,除了以下情況:

  • _id字段總是文檔中的第一個字段
  • 如果更新包含對字段進行命名的操作,可能導致文檔的字段重新排序

upsert選項

調用update_one(), update_many(), replace_one()這些方法時,如果指定upsert=True,那么當匹配的文檔不存在時,將創建新的文檔并插入。

刪除文檔

刪除文檔的方法:

  • db.collection.deleteOne() 最多刪除一個文檔(即便匹配出多個結果)
  • db.collection.deleteMany() 刪除匹配的所有文檔
  • db.collection.remove() 刪除匹配的單個或多個文檔

準備數據:

import pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test8db.inventory.insert_many([{"item": "journal","qty": 25,"size": {"h": 14, "w": 21, "uom": "cm"},"status": "A"},{"item": "notebook","qty": 50,"size": {"h": 8.5, "w": 11, "uom": "in"},"status": "P"},{"item": "paper","qty": 100,"size": {"h": 8.5, "w": 11, "uom": "in"},"status": "D"},{"item": "planner","qty": 75,"size": {"h": 22.85, "w": 30, "uom": "cm"},"status": "D"},{"item": "postcard","qty": 45,"size": {"h": 10, "w": 15.25, "uom": "cm"},"status": "A"}])

刪除所有文檔

如果要刪除所有文檔,只需給delete_many()方法的filter傳入一個空文檔即可

res = db.inventory.count_documents({}) # 查看所有文檔數 print(res) # 5 res = db.inventory.delete_many({}) print(res.deleted_count) # 5

刪除滿足條件的所有文檔

只需給delete_many()方法的filter傳入過濾條件即可,比如

# 刪除status是A點所有文檔 res = db.inventory.delete_many({'status': 'A'}) print(res.deleted_count) # 2

只刪除滿足條件的一個文檔

count = db.inventory.count_documents({'status': 'D'}) cursor = db.inventory.find({'status': 'D'}) print(count) # 2 print([item for item in cursor]) """ [{'_id': ObjectId('5c922bb5bddaf04be0e84076'),'item': 'paper','qty': 100,'size': {'h': 8.5,'w': 11,'uom': 'in'},'status': 'D' }, {'_id': ObjectId('5c922bb5bddaf04be0e84077'),'item': 'planner','qty': 75,'size': {'h': 22.85,'w': 30,'uom': 'cm'},'status': 'D' }] """db.inventory.delete_one({'status': 'D'}) count = db.inventory.count_documents({'status': 'D'}) cursor = db.inventory.find({'status': 'D'}) print(count) print([item for item in cursor]) # 滿足條件的第一個文檔已被刪除 """ [{'_id': ObjectId('5c922bb5bddaf04be0e84077'),'item': 'planner','qty': 75,'size': {'h': 22.85,'w': 30,'uom': 'cm'},'status': 'D' }] """

刪除行為

索引

刪除操作不會刪除索引,即使從表中刪除所有文檔。

原子性

單個文檔的級別上是原子性操作。

批量寫操作:

批量寫操作只對單個集合有效。insert_many()能進行批量插入,另外,bulk_write()方法支持如下的多種寫操作:

  • insert_one
  • update_one
  • update_many
  • replace_one
  • delete_one
  • delete_many

將每種操作放在列表中,然后傳給bulk_write()

下面我們來試一下,準備數據:

import pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test8res = db.characters.insert_many([{"_id": 1, "char": "Brisbane", "class": "monk", "lvl": 4},{"_id": 2, "char": "Eldon", "class": "alchemist", "lvl": 3},{"_id": 3, "char": "Meldane", "class": "ranger", "lvl": 3} ])print(res.inserted_ids) # [1, 2, 3]

使用bulk_write()對characters集合執行多個操作:

import pymongo from pymongo import InsertOne, UpdateOne, DeleteOne, ReplaceOne # 導入各操作對象client = pymongo.MongoClient('mongodb://localhost:27017/') db = client.test8try:res = db.characters.bulk_write([InsertOne({'_id': 4, 'char': 'Dithras', 'class': 'barbarian', 'lvl': 4}),InsertOne({'_id': 5, 'char': 'Taeln', 'class': 'fighter', 'lvl': 3}),UpdateOne({'char': 'Eldon'},{'$set': {'status': 'Critical Injury'}}, upsert=True),UpdateOne({'char': 'Ayhan'},{'$set': {'status': 'God hit'}}, upsert=True),ReplaceOne({'char': 'Meldane'},{"char": "Tanys", "class": "oracle", "lvl": 4}, upsert=True),DeleteOne({'char': 'Brisbane'}),])print(res.inserted_count) # 2print(res.modified_count) # 2print(res.upserted_count) # 1print(res.deleted_count) # 1# 以上打印方式比較繁瑣,也可以這樣直接打印本次批量操作的詳細信息:print(res.bulk_api_result) except Exception as e:print(e)cursor = db.characters.find({}) print([item for item in cursor]) """ [{'_id': 2,'char': 'Eldon','class': 'alchemist','lvl': 3,'status': 'Critical Injury' }, {'_id': 3,'char': 'Tanys','class': 'oracle','lvl': 4 }, {'_id': 4,'char': 'Dithras','class': 'barbarian','lvl': 4 }, {'_id': 5,'char': 'Taeln','class': 'fighter','lvl': 3 }, {'_id': ObjectId('5c92fc403744b8cc2b23f3c3'),'char': 'Ayhan','status': 'God hit' }] """

分片集合的批量插入策略

暫不討論。

索引

添加索引可以加速特定的查詢,也可以為文檔在查詢和存儲增加額外的功能。下面演示下如何用PyMongo創建unique索引:

db.user.create_index([('user_id', pymongo.ASCENDING) ], unique=True)print(list(db.user.index_information())) """ ['_id_', 'user_id_1']_id_ 是MongoDB自動創建的索引 user_id_1 是我們剛剛創建的索引 """

創建了唯一索引約束后,如果插入數據的user_id字段的值在集合中已經存在,會插入失敗。

聚合

準備數據:

import pymongoclient = pymongo.MongoClient(host='localhost', port=27017) db = client.test9db.things.insert_many([{'x': 1, 'tags': ['dog', 'cat']},{'x': 2, 'tags': ['cat']},{'x': 2, 'tags': ['mouse', 'cat', 'dog']},{'x': 3, 'tags': []}, ])

Pipeline聚合

下面執行一個簡答的聚合操作,統計集合內tags數組內每個元素的出現次數。要實現這個操作,需要傳入3個操作給pipeline,首先展開tags數組,然后按元素進行分組并加總,最后根據加總數進行排序即可。

注意,由于python的字典是無序的,如果要求精確排序(比如$sort),就得使用SON或者collections.OrderedDict對象:

import pymongo from bson.son import SON import pprintclient = pymongo.MongoClient(host='localhost', port=27017) db = client.test9pipeline = [{'$unwind': '$tags'},{'$group': {'_id': '$tags', 'count': {'$sum': 1}}}, # 以元素作為_id字段的值,以元素個數作為count字段的值,1表示正加總(-1則進行負加總){'$sort': SON([('count', -1), ('_id', -1)])} # 先按count, 再按_id排序,-1表示倒序 ] pprint.pprint(list(db.things.aggregate(pipeline))) """ [{'_id': 'cat', 'count': 3},{'_id': 'dog', 'count': 2},{'_id': 'mouse', 'count': 1}] """# 如果顛倒排序順序為: {'$sort': SON([('_id', -1), ('count', -1)])},結果如下: """ [{'_id': 'mouse', 'count': 1},{'_id': 'dog', 'count': 2},{'_id': 'cat', 'count': 3}] """# 如果想查看該操作的詳細信息,可以使用command()方法: res = db.command('aggregate', 'things', pipeline=pipeline, explain=True) pprint.pprint(res) """ {'ok': 1.0,'stages': [{'$cursor': {'fields': {'_id': 0, 'tags': 1},'query': {},'queryPlanner': {'indexFilterSet': False,'namespace': 'test9.things','parsedQuery': {},'plannerVersion': 1,'rejectedPlans': [],'winningPlan': {'direction': 'forward','stage': 'COLLSCAN'}}}},{'$unwind': {'path': '$tags'}},{'$group': {'_id': '$tags', 'count': {'$sum': {'$const': 1}}}},{'$sort': {'sortKey': {'_id': -1, 'count': -1}}}]} """

聚合框架還可以提供投影能力來重塑返回的數據。利用投影和聚合,你可以在結果中增加計算字段,創建虛擬子對象,或者提取子字段為根級字段。更多查看:聚合框架

Map / Reduce 聚合

另一種實現聚合的方式是使用map reduce,下面我們通過定義map和reduce函數來實現上面的聚合計算。

map函數循環數組,對其中的每個元素觸發一個鍵值對兒(key, 1):

高級 Map / Reduce

寫入重試

寫操作時,如果發生網絡錯誤,是否支持重試。在pymongo中,可以在實例化客戶端時指定,比如:

client = pymongo.MongoClient(host='localhost',port=27017,retryWrites=True # 默認是False,具體可以查看源碼中的doc )

文本搜索

MongoDB支持通過$text運算符對文本字段作索引,以方便文本搜索。不過嘛,不支持中文,洗洗睡。。。

運算符列表:

名稱描述
$or邏輯或
$eq等于
$gt大于
$gte大于等于
$in在數組中
$lt小于
$lte小于等于
$ne不等于
$nin不在數組中
$elemMatch數組元素滿足
$all數組包含元素
$slice數組切片
$type字段值類型檢查
$exists字段是否存在判斷
$set更新字段的值
$currentDate設定某字段的值為當前日期時間
$inc增加某字段的值
$push為數組字段添加新的元素

mongoengine

待完善。

總結

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

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

熟妇人妻激情偷爽文 | 国产精品毛多多水多 | 妺妺窝人体色www婷婷 | 鲁鲁鲁爽爽爽在线视频观看 | 久久五月精品中文字幕 | 激情人妻另类人妻伦 | 亚洲 a v无 码免 费 成 人 a v | 国产午夜视频在线观看 | 亚洲精品一区二区三区在线 | 少妇无码一区二区二三区 | 精品少妇爆乳无码av无码专区 | 精品厕所偷拍各类美女tp嘘嘘 | 成人片黄网站色大片免费观看 | 麻豆国产人妻欲求不满谁演的 | 无码国内精品人妻少妇 | 无套内射视频囯产 | av人摸人人人澡人人超碰下载 | 丰满人妻翻云覆雨呻吟视频 | 18禁黄网站男男禁片免费观看 | 国产人妖乱国产精品人妖 | 人妻少妇精品视频专区 | 日韩精品久久久肉伦网站 | 久久精品99久久香蕉国产色戒 | 亚欧洲精品在线视频免费观看 | 成年女人永久免费看片 | 丁香花在线影院观看在线播放 | 97夜夜澡人人爽人人喊中国片 | 伊人久久大香线焦av综合影院 | 四虎国产精品一区二区 | 狠狠综合久久久久综合网 | 久久精品人妻少妇一区二区三区 | 无码帝国www无码专区色综合 | 久久亚洲精品中文字幕无男同 | 日日天日日夜日日摸 | 国产精品第一国产精品 | 在线亚洲高清揄拍自拍一品区 | 51国偷自产一区二区三区 | 亚洲国产精品无码久久久久高潮 | 国产亚洲精品久久久久久久久动漫 | 爽爽影院免费观看 | 国产色在线 | 国产 | 亚洲成av人综合在线观看 | 欧美野外疯狂做受xxxx高潮 | 又黄又爽又色的视频 | 亚洲精品午夜国产va久久成人 | 久久精品女人天堂av免费观看 | 久久99精品久久久久久 | 中文字幕无码av波多野吉衣 | 天堂在线观看www | 狠狠噜狠狠狠狠丁香五月 | 国产成人综合在线女婷五月99播放 | 99久久精品国产一区二区蜜芽 | 高清无码午夜福利视频 | 扒开双腿疯狂进出爽爽爽视频 | 蜜臀av无码人妻精品 | 高清不卡一区二区三区 | 成人精品视频一区二区 | 欧美人与牲动交xxxx | a片免费视频在线观看 | 无码av岛国片在线播放 | 国产99久久精品一区二区 | 亚洲成a人一区二区三区 | 成在人线av无码免观看麻豆 | 国产黑色丝袜在线播放 | 少妇被黑人到高潮喷出白浆 | 国产精品久久久久久久9999 | 欧美日韩综合一区二区三区 | 无码精品国产va在线观看dvd | 精品亚洲韩国一区二区三区 | 偷窥日本少妇撒尿chinese | 天堂在线观看www | 色综合视频一区二区三区 | 亚洲色大成网站www | 亚洲中文字幕成人无码 | 国精产品一品二品国精品69xx | 亚洲色偷偷偷综合网 | 国产精品久久久久久久9999 | 人妻互换免费中文字幕 | av在线亚洲欧洲日产一区二区 | 麻豆成人精品国产免费 | 四虎国产精品免费久久 | 精品国产av色一区二区深夜久久 | 国产偷抇久久精品a片69 | 四虎影视成人永久免费观看视频 | 呦交小u女精品视频 | 精品国产麻豆免费人成网站 | 午夜理论片yy44880影院 | 欧美性生交活xxxxxdddd | 成年美女黄网站色大免费视频 | 午夜肉伦伦影院 | 狠狠色噜噜狠狠狠7777奇米 | 国产成人精品久久亚洲高清不卡 | 牲欲强的熟妇农村老妇女视频 | 日日橹狠狠爱欧美视频 | 麻豆av传媒蜜桃天美传媒 | 成人亚洲精品久久久久软件 | 久精品国产欧美亚洲色aⅴ大片 | 欧美日韩人成综合在线播放 | 十八禁真人啪啪免费网站 | 久久久久亚洲精品中文字幕 | 国产无套内射久久久国产 | 中文字幕亚洲情99在线 | 国产午夜无码精品免费看 | 久久精品女人的天堂av | 曰本女人与公拘交酡免费视频 | 蜜臀av无码人妻精品 | 色综合久久久久综合一本到桃花网 | 自拍偷自拍亚洲精品被多人伦好爽 | 九月婷婷人人澡人人添人人爽 | 好爽又高潮了毛片免费下载 | 国产熟妇高潮叫床视频播放 | 夜精品a片一区二区三区无码白浆 | 88国产精品欧美一区二区三区 | 国产激情一区二区三区 | 无码乱肉视频免费大全合集 | 少妇的肉体aa片免费 | 美女张开腿让人桶 | 又湿又紧又大又爽a视频国产 | 丝袜足控一区二区三区 | 久久久久久九九精品久 | 无码成人精品区在线观看 | 久久久久se色偷偷亚洲精品av | 亚洲呦女专区 | 黑人巨大精品欧美黑寡妇 | 日本饥渴人妻欲求不满 | 樱花草在线社区www | 色婷婷香蕉在线一区二区 | 精品欧美一区二区三区久久久 | 精品欧美一区二区三区久久久 | 国产办公室秘书无码精品99 | 无码国产激情在线观看 | 国产色视频一区二区三区 | 精品国产一区二区三区av 性色 | 亚洲大尺度无码无码专区 | 天堂亚洲免费视频 | 亚洲理论电影在线观看 | 少妇太爽了在线观看 | 久久精品视频在线看15 | 未满小14洗澡无码视频网站 | 99国产精品白浆在线观看免费 | 少女韩国电视剧在线观看完整 | 九九在线中文字幕无码 | 亚洲无人区一区二区三区 | 撕开奶罩揉吮奶头视频 | 曰韩无码二三区中文字幕 | 亚洲日韩av一区二区三区四区 | 美女黄网站人色视频免费国产 | 无码av中文字幕免费放 | 日本一本二本三区免费 | 18禁止看的免费污网站 | 人人妻在人人 | 欧美国产日韩亚洲中文 | 牲欲强的熟妇农村老妇女视频 | 青青草原综合久久大伊人精品 | 国产午夜福利100集发布 | 玩弄中年熟妇正在播放 | 国产成人精品优优av | 亚洲一区二区三区国产精华液 | 色欲综合久久中文字幕网 | 免费乱码人妻系列无码专区 | 动漫av网站免费观看 | 波多野结衣 黑人 | 日韩视频 中文字幕 视频一区 | 免费播放一区二区三区 | 色婷婷综合激情综在线播放 | 成人欧美一区二区三区黑人免费 | 国内综合精品午夜久久资源 | 成人欧美一区二区三区 | 好屌草这里只有精品 | 久久久精品国产sm最大网站 | 国产尤物精品视频 | 国产精品办公室沙发 | 久久亚洲国产成人精品性色 | 2020久久香蕉国产线看观看 | 日日麻批免费40分钟无码 | 国产精品手机免费 | 色综合久久久无码网中文 | 国产特级毛片aaaaaaa高清 | 精品国产一区二区三区四区 | 日本又色又爽又黄的a片18禁 | 国产精品亚洲专区无码不卡 | 天天躁夜夜躁狠狠是什么心态 | 男女性色大片免费网站 | 久久99久久99精品中文字幕 | 色综合久久久久综合一本到桃花网 | 一本久道久久综合狠狠爱 | 久久人人爽人人爽人人片av高清 | 2020久久超碰国产精品最新 | 日韩精品无码一区二区中文字幕 | 国产乱子伦视频在线播放 | 久久99精品国产麻豆蜜芽 | 天堂а√在线中文在线 | 午夜男女很黄的视频 | 久久久久久亚洲精品a片成人 | 久久99精品国产.久久久久 | 亚洲欧美色中文字幕在线 | 曰本女人与公拘交酡免费视频 | 亚洲男人av香蕉爽爽爽爽 | 免费观看激色视频网站 | 欧美日韩人成综合在线播放 | 国产亚洲精品久久久久久国模美 | 亚洲の无码国产の无码步美 | 日本精品人妻无码77777 天堂一区人妻无码 | 国模大胆一区二区三区 | 性做久久久久久久久 | 欧美成人午夜精品久久久 | 激情内射亚州一区二区三区爱妻 | 亚无码乱人伦一区二区 | 精品厕所偷拍各类美女tp嘘嘘 | 国产人妻精品一区二区三区 | 色婷婷av一区二区三区之红樱桃 | 亚洲高清偷拍一区二区三区 | 日韩人妻无码中文字幕视频 | 国产午夜视频在线观看 | 麻豆人妻少妇精品无码专区 | 国产精品资源一区二区 | 色一情一乱一伦一视频免费看 | 男女下面进入的视频免费午夜 | 色老头在线一区二区三区 | 大乳丰满人妻中文字幕日本 | 欧美熟妇另类久久久久久多毛 | 久久这里只有精品视频9 | 国产97在线 | 亚洲 | 露脸叫床粗话东北少妇 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲中文字幕无码中文字在线 | 国产 精品 自在自线 | 精品无码av一区二区三区 | 亚洲码国产精品高潮在线 | 亚洲精品综合五月久久小说 | аⅴ资源天堂资源库在线 | 色噜噜亚洲男人的天堂 | 麻豆人妻少妇精品无码专区 | 99久久无码一区人妻 | 综合激情五月综合激情五月激情1 | 国产亚洲人成a在线v网站 | 国产精品久久福利网站 | 亚洲啪av永久无码精品放毛片 | 日韩精品无码免费一区二区三区 | 亚洲最大成人网站 | 国产sm调教视频在线观看 | 蜜桃视频插满18在线观看 | 亚欧洲精品在线视频免费观看 | 亚洲成a人片在线观看无码 | 曰韩少妇内射免费播放 | 亚洲国产精品毛片av不卡在线 | 亚洲 日韩 欧美 成人 在线观看 | 少妇一晚三次一区二区三区 | 成人精品一区二区三区中文字幕 | 国产热a欧美热a在线视频 | 色五月丁香五月综合五月 | 人妻少妇精品无码专区动漫 | 精品国产aⅴ无码一区二区 | 亚洲综合精品香蕉久久网 | 国产婷婷色一区二区三区在线 | 最近免费中文字幕中文高清百度 | 免费人成在线观看网站 | 免费看男女做好爽好硬视频 | 国产成人无码区免费内射一片色欲 | 日日躁夜夜躁狠狠躁 | 精品人妻中文字幕有码在线 | 亚洲s色大片在线观看 | 日本xxxx色视频在线观看免费 | 人人妻人人澡人人爽欧美一区九九 | 国产亚洲精品久久久久久久久动漫 | 黑人巨大精品欧美一区二区 | 欧美大屁股xxxxhd黑色 | 鲁一鲁av2019在线 | 国产内射老熟女aaaa | 少妇厨房愉情理9仑片视频 | 国产人妻大战黑人第1集 | 中文字幕亚洲情99在线 | 综合人妻久久一区二区精品 | 国产精品无码一区二区三区不卡 | 2019nv天堂香蕉在线观看 | 国产精品无码久久av | 青青久在线视频免费观看 | 精品久久综合1区2区3区激情 | 天堂а√在线中文在线 | 一本大道久久东京热无码av | 日产精品高潮呻吟av久久 | 日日干夜夜干 | 高潮毛片无遮挡高清免费视频 | 国产免费久久精品国产传媒 | 色欲av亚洲一区无码少妇 | 国产精品久久久久久久9999 | 国产精品国产自线拍免费软件 | 久久久久av无码免费网 | 玩弄人妻少妇500系列视频 | 国产激情综合五月久久 | 国产成人无码区免费内射一片色欲 | 久久这里只有精品视频9 | 玩弄人妻少妇500系列视频 | 亚洲国产欧美日韩精品一区二区三区 | 欧洲精品码一区二区三区免费看 | 奇米影视7777久久精品人人爽 | 日韩无码专区 | 欧美三级不卡在线观看 | 免费人成在线视频无码 | 国产熟妇另类久久久久 | 奇米影视7777久久精品人人爽 | 欧美日韩一区二区免费视频 | 色综合天天综合狠狠爱 | 国产精品美女久久久网av | 无码福利日韩神码福利片 | 天天综合网天天综合色 | 人妻少妇精品无码专区动漫 | 东京热一精品无码av | 久久精品人人做人人综合试看 | 国产成人无码av片在线观看不卡 | 日韩精品乱码av一区二区 | 国产九九九九九九九a片 | 国产亚洲精品久久久久久久久动漫 | 丰满诱人的人妻3 | 宝宝好涨水快流出来免费视频 | 国产绳艺sm调教室论坛 | 99久久99久久免费精品蜜桃 | 黑人巨大精品欧美一区二区 | 一本大道伊人av久久综合 | 人妻尝试又大又粗久久 | 亚洲成a人一区二区三区 | 98国产精品综合一区二区三区 | 牛和人交xxxx欧美 | 午夜福利一区二区三区在线观看 | 亚洲人亚洲人成电影网站色 | 国产内射老熟女aaaa | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲色在线无码国产精品不卡 | 成人综合网亚洲伊人 | 欧美成人高清在线播放 | 美女极度色诱视频国产 | 亚洲国产精品毛片av不卡在线 | 亚洲精品中文字幕久久久久 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 99精品视频在线观看免费 | 国产精品办公室沙发 | 亚洲中文字幕无码中文字在线 | 风流少妇按摩来高潮 | 鲁大师影院在线观看 | 国产又爽又黄又刺激的视频 | 亚洲国产成人av在线观看 | 国产电影无码午夜在线播放 | 好男人社区资源 | 青青青手机频在线观看 | 无遮挡国产高潮视频免费观看 | 377p欧洲日本亚洲大胆 | 亚洲男人av香蕉爽爽爽爽 | 亚洲理论电影在线观看 | 麻豆精产国品 | 精品国偷自产在线视频 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | av在线亚洲欧洲日产一区二区 | 久久精品人妻少妇一区二区三区 | 国产精品无码久久av | 久久久www成人免费毛片 | 亚洲精品国产精品乱码不卡 | 国产精品香蕉在线观看 | 午夜免费福利小电影 | 风流少妇按摩来高潮 | 377p欧洲日本亚洲大胆 | 欧美午夜特黄aaaaaa片 | 久久人人爽人人爽人人片ⅴ | 亚洲娇小与黑人巨大交 | 欧美成人家庭影院 | 国产精品办公室沙发 | 国产精品二区一区二区aⅴ污介绍 | 永久免费观看美女裸体的网站 | 久久综合激激的五月天 | 丰满少妇熟乱xxxxx视频 | 无码人妻精品一区二区三区下载 | 久久久久久a亚洲欧洲av冫 | 久久无码中文字幕免费影院蜜桃 | 人人妻人人澡人人爽精品欧美 | 丰满人妻精品国产99aⅴ | 狂野欧美激情性xxxx | 日韩视频 中文字幕 视频一区 | 亚洲天堂2017无码中文 | 骚片av蜜桃精品一区 | 暴力强奷在线播放无码 | 少妇被粗大的猛进出69影院 | 亚洲中文字幕无码中字 | 国色天香社区在线视频 | 国产午夜无码视频在线观看 | 国产午夜无码精品免费看 | 超碰97人人射妻 | 午夜成人1000部免费视频 | 性欧美牲交在线视频 | 动漫av网站免费观看 | 亚洲精品一区二区三区大桥未久 | 欧美精品一区二区精品久久 | 国产免费久久久久久无码 | 免费人成网站视频在线观看 | 精品国产精品久久一区免费式 | 人妻夜夜爽天天爽三区 | 中文字幕无码视频专区 | 婷婷综合久久中文字幕蜜桃三电影 | 精品人妻人人做人人爽 | 99久久婷婷国产综合精品青草免费 | 人妻互换免费中文字幕 | 99久久精品日本一区二区免费 | 国产精品无码成人午夜电影 | 欧美性猛交内射兽交老熟妇 | 亚洲国产精品无码一区二区三区 | 亚洲欧洲日本综合aⅴ在线 | 高潮毛片无遮挡高清免费视频 | 久久久亚洲欧洲日产国码αv | yw尤物av无码国产在线观看 | 性欧美牲交xxxxx视频 | 一区二区传媒有限公司 | 国产真人无遮挡作爱免费视频 | 国产无遮挡吃胸膜奶免费看 | 久久久久免费精品国产 | 2020久久超碰国产精品最新 | 欧美老妇与禽交 | 国语自产偷拍精品视频偷 | 国产无遮挡又黄又爽免费视频 | 色一情一乱一伦一区二区三欧美 | 无码国产乱人伦偷精品视频 | 一个人免费观看的www视频 | 久久精品一区二区三区四区 | 六十路熟妇乱子伦 | 图片小说视频一区二区 | 一本久道久久综合狠狠爱 | 成人性做爰aaa片免费看不忠 | 免费无码的av片在线观看 | 久久久久久久人妻无码中文字幕爆 | 2020最新国产自产精品 | 亚洲一区二区三区偷拍女厕 | 国产午夜亚洲精品不卡 | 国产亚洲欧美日韩亚洲中文色 | 亚洲一区二区三区含羞草 | 国产精品va在线观看无码 | 国产成人无码区免费内射一片色欲 | 成人性做爰aaa片免费看 | 人人澡人人妻人人爽人人蜜桃 | 亚洲欧美中文字幕5发布 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 久久zyz资源站无码中文动漫 | 午夜性刺激在线视频免费 | 久久综合香蕉国产蜜臀av | 性欧美大战久久久久久久 | 国产av剧情md精品麻豆 | 国产精品久免费的黄网站 | 日韩亚洲欧美精品综合 | 国产午夜亚洲精品不卡下载 | 国产艳妇av在线观看果冻传媒 | 中文字幕日韩精品一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 精品偷拍一区二区三区在线看 | 精品厕所偷拍各类美女tp嘘嘘 | 久久精品国产一区二区三区肥胖 | 精品国产福利一区二区 | 国产在线一区二区三区四区五区 | 三上悠亚人妻中文字幕在线 | 国产内射老熟女aaaa | 四虎影视成人永久免费观看视频 | 大胆欧美熟妇xx | 国产成人无码专区 | 熟女俱乐部五十路六十路av | 亚洲天堂2017无码中文 | 在线观看免费人成视频 | 蜜桃视频插满18在线观看 | 一本久道高清无码视频 | 成熟人妻av无码专区 | 俺去俺来也www色官网 | 亚洲一区二区三区 | 一二三四社区在线中文视频 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 精品少妇爆乳无码av无码专区 | 久久久精品欧美一区二区免费 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲啪av永久无码精品放毛片 | 日本高清一区免费中文视频 | 高潮毛片无遮挡高清免费视频 | 最近的中文字幕在线看视频 | 九九综合va免费看 | 曰韩无码二三区中文字幕 | 99精品国产综合久久久久五月天 | 97色伦图片97综合影院 | 亚洲精品国偷拍自产在线观看蜜桃 | 日本丰满护士爆乳xxxx | 国精产品一品二品国精品69xx | 无码成人精品区在线观看 | 四虎影视成人永久免费观看视频 | 亚洲日韩av一区二区三区四区 | 久久久久99精品国产片 | 丰满人妻一区二区三区免费视频 | 久久亚洲国产成人精品性色 | 中文字幕日产无线码一区 | 未满成年国产在线观看 | 丝袜 中出 制服 人妻 美腿 | 亚洲综合另类小说色区 | 伊人久久婷婷五月综合97色 | 噜噜噜亚洲色成人网站 | 无码精品国产va在线观看dvd | 精品亚洲韩国一区二区三区 | 精品无码成人片一区二区98 | 日本欧美一区二区三区乱码 | 亚洲国产一区二区三区在线观看 | 国产精品第一国产精品 | 欧美freesex黑人又粗又大 | 国产小呦泬泬99精品 | 亚洲精品国产精品乱码视色 | 大肉大捧一进一出视频出来呀 | 国内丰满熟女出轨videos | 夜夜躁日日躁狠狠久久av | 亚洲精品综合五月久久小说 | 男女猛烈xx00免费视频试看 | 丝袜人妻一区二区三区 | 国产精品免费大片 | 国产极品美女高潮无套在线观看 | 欧美野外疯狂做受xxxx高潮 | 欧美熟妇另类久久久久久多毛 | 午夜精品一区二区三区在线观看 | 国产午夜亚洲精品不卡 | 亚洲色偷偷偷综合网 | 老熟妇乱子伦牲交视频 | 超碰97人人射妻 | 黑人玩弄人妻中文在线 | 国产精品久久福利网站 | 国产精品无码久久av | 大地资源网第二页免费观看 | 国产精品亚洲一区二区三区喷水 | 成人女人看片免费视频放人 | 日本大乳高潮视频在线观看 | 麻豆国产97在线 | 欧洲 | 成人欧美一区二区三区黑人 | 鲁大师影院在线观看 | 亚洲精品成人福利网站 | 国产精品毛多多水多 | 国产又爽又黄又刺激的视频 | 久久久久久av无码免费看大片 | 99久久亚洲精品无码毛片 | 乌克兰少妇xxxx做受 | 国产午夜无码视频在线观看 | 人妻少妇精品无码专区二区 | 国产内射爽爽大片视频社区在线 | 曰韩少妇内射免费播放 | 色婷婷香蕉在线一区二区 | 久热国产vs视频在线观看 | 色老头在线一区二区三区 | 无码午夜成人1000部免费视频 | 国产精品鲁鲁鲁 | 国产精品怡红院永久免费 | 国产成人一区二区三区在线观看 | 99精品视频在线观看免费 | 中文字幕日产无线码一区 | 伊人色综合久久天天小片 | 精品乱子伦一区二区三区 | 亚洲а∨天堂久久精品2021 | 午夜免费福利小电影 | 欧美高清在线精品一区 | 亚洲成av人综合在线观看 | 青草青草久热国产精品 | 精品 日韩 国产 欧美 视频 | 丁香啪啪综合成人亚洲 | 亚洲综合精品香蕉久久网 | 人妻体内射精一区二区三四 | 精品久久久无码中文字幕 | 午夜熟女插插xx免费视频 | 福利一区二区三区视频在线观看 | 日韩人妻少妇一区二区三区 | 精品欧美一区二区三区久久久 | 一本久久伊人热热精品中文字幕 | 狠狠cao日日穞夜夜穞av | 国产乱码精品一品二品 | 国产成人一区二区三区在线观看 | 男女猛烈xx00免费视频试看 | 免费中文字幕日韩欧美 | 玩弄少妇高潮ⅹxxxyw | 久久久久人妻一区精品色欧美 | 成人免费视频一区二区 | 曰韩少妇内射免费播放 | 成人一区二区免费视频 | 麻豆国产人妻欲求不满谁演的 | 日本熟妇人妻xxxxx人hd | 免费无码的av片在线观看 | 亚洲成色在线综合网站 | 亚洲精品国产a久久久久久 | 亚洲综合色区中文字幕 | 娇妻被黑人粗大高潮白浆 | 国产精品久久久久久无码 | 久久午夜夜伦鲁鲁片无码免费 | 国产亚洲人成a在线v网站 | 成年美女黄网站色大免费全看 | 欧美日韩一区二区免费视频 | 久久99热只有频精品8 | 久久精品国产大片免费观看 | 久久精品国产日本波多野结衣 | 亚洲 另类 在线 欧美 制服 | 欧美人与禽猛交狂配 | 亚洲色大成网站www国产 | 人妻人人添人妻人人爱 | 中文字幕人妻无码一区二区三区 | 性做久久久久久久免费看 | 无码人妻精品一区二区三区下载 | 婷婷色婷婷开心五月四房播播 | 亚洲自偷精品视频自拍 | 超碰97人人射妻 | 欧美freesex黑人又粗又大 | 强伦人妻一区二区三区视频18 | a在线亚洲男人的天堂 | 人人澡人人妻人人爽人人蜜桃 | 欧美午夜特黄aaaaaa片 | 亚洲男人av天堂午夜在 | 88国产精品欧美一区二区三区 | 中文字幕av日韩精品一区二区 | 最近中文2019字幕第二页 | 免费看少妇作爱视频 | 欧美日韩综合一区二区三区 | 久9re热视频这里只有精品 | 国产热a欧美热a在线视频 | √天堂中文官网8在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲区欧美区综合区自拍区 | 中文字幕乱码亚洲无线三区 | 久久久精品人妻久久影视 | 日韩无套无码精品 | 人人爽人人澡人人高潮 | 国产一区二区不卡老阿姨 | 亚洲人成网站色7799 | 欧美人妻一区二区三区 | 久久人妻内射无码一区三区 | 亚洲欧洲日本综合aⅴ在线 | 亚洲自偷自偷在线制服 | 狠狠躁日日躁夜夜躁2020 | 天天做天天爱天天爽综合网 | 日本熟妇大屁股人妻 | 欧美 日韩 亚洲 在线 | 任你躁国产自任一区二区三区 | 国产一区二区不卡老阿姨 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产亚洲精品久久久久久久久动漫 | 亚洲一区二区三区含羞草 | 日本xxxx色视频在线观看免费 | 日日麻批免费40分钟无码 | 少妇太爽了在线观看 | 动漫av一区二区在线观看 | 小泽玛莉亚一区二区视频在线 | 特黄特色大片免费播放器图片 | 国产特级毛片aaaaaa高潮流水 | 国产猛烈高潮尖叫视频免费 | 国产精品久久久午夜夜伦鲁鲁 | 久久视频在线观看精品 | 国产熟妇另类久久久久 | 国产香蕉97碰碰久久人人 | 精品日本一区二区三区在线观看 | 波多野结衣乳巨码无在线观看 | 精品无人区无码乱码毛片国产 | 久久精品人人做人人综合 | 天堂а√在线中文在线 | 国产黄在线观看免费观看不卡 | 无码国产乱人伦偷精品视频 | 成人精品视频一区二区三区尤物 | 亚洲小说春色综合另类 | 精品亚洲成av人在线观看 | 亚洲日韩中文字幕在线播放 | 中文字幕人妻无码一区二区三区 | 久久熟妇人妻午夜寂寞影院 | 久久久久亚洲精品男人的天堂 | 玩弄少妇高潮ⅹxxxyw | 久久久av男人的天堂 | 久久亚洲a片com人成 | 18禁黄网站男男禁片免费观看 | 国语精品一区二区三区 | 好屌草这里只有精品 | 精品无码av一区二区三区 | 少妇厨房愉情理9仑片视频 | 国产香蕉97碰碰久久人人 | 亚洲国产精品无码一区二区三区 | 日本熟妇乱子伦xxxx | 欧美日韩在线亚洲综合国产人 | 精品无码一区二区三区的天堂 | 欧美激情内射喷水高潮 | 日韩欧美中文字幕在线三区 | 99麻豆久久久国产精品免费 | 国产无套内射久久久国产 | 偷窥村妇洗澡毛毛多 | 亚洲欧美日韩成人高清在线一区 | a在线亚洲男人的天堂 | 天堂在线观看www | 亚洲国产精品成人久久蜜臀 | 无遮挡国产高潮视频免费观看 | 精品无码成人片一区二区98 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产精品丝袜黑色高跟鞋 | 高清国产亚洲精品自在久久 | 5858s亚洲色大成网站www | 久久午夜无码鲁丝片 | 国产suv精品一区二区五 | 国内揄拍国内精品少妇国语 | 免费无码一区二区三区蜜桃大 | 国产精品毛多多水多 | 天堂亚洲2017在线观看 | 熟女俱乐部五十路六十路av | 国产97人人超碰caoprom | 精品国产一区二区三区av 性色 | 高潮喷水的毛片 | 性色欲网站人妻丰满中文久久不卡 | 九九热爱视频精品 | 成熟女人特级毛片www免费 | 亚洲精品一区二区三区在线观看 | 国产精品丝袜黑色高跟鞋 | 无码人妻丰满熟妇区五十路百度 | 亚洲一区二区三区香蕉 | 午夜精品久久久久久久 | 国产福利视频一区二区 | 日本大香伊一区二区三区 | 亚洲中文字幕成人无码 | 色一情一乱一伦一区二区三欧美 | 亚洲码国产精品高潮在线 | 精品国精品国产自在久国产87 | 18精品久久久无码午夜福利 | 亚洲国产成人av在线观看 | 亚洲国产精品久久人人爱 | 久久99精品国产.久久久久 | 18精品久久久无码午夜福利 | 久久久亚洲欧洲日产国码αv | 日日碰狠狠躁久久躁蜜桃 | 波多野42部无码喷潮在线 | 国产农村乱对白刺激视频 | 日韩av无码一区二区三区不卡 | 日韩欧美中文字幕在线三区 | 牲欲强的熟妇农村老妇女视频 | 少妇人妻av毛片在线看 | 中文字幕久久久久人妻 | 少妇太爽了在线观看 | 无码人妻久久一区二区三区不卡 | 久久久中文久久久无码 | 亚洲国产午夜精品理论片 | 中文字幕日产无线码一区 | 亚洲精品www久久久 | 色情久久久av熟女人妻网站 | 久久久久亚洲精品中文字幕 | 无码免费一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 国产在热线精品视频 | 5858s亚洲色大成网站www | 丰满人妻精品国产99aⅴ | 精品少妇爆乳无码av无码专区 | 高中生自慰www网站 | 波多野结衣av一区二区全免费观看 | 97夜夜澡人人爽人人喊中国片 | 国产麻豆精品精东影业av网站 | 欧美日韩精品 | 精品国偷自产在线视频 | 国产综合久久久久鬼色 | 377p欧洲日本亚洲大胆 | 沈阳熟女露脸对白视频 | 午夜熟女插插xx免费视频 | 国产福利视频一区二区 | 久久aⅴ免费观看 | 精品国产一区av天美传媒 | 未满成年国产在线观看 | 欧美真人作爱免费视频 | 欧美怡红院免费全部视频 | 99久久人妻精品免费一区 | 亚洲欧美精品aaaaaa片 | 高清国产亚洲精品自在久久 | 一区二区三区乱码在线 | 欧洲 | 免费无码的av片在线观看 | 中文字幕无码免费久久99 | 奇米影视7777久久精品人人爽 | 成人综合网亚洲伊人 | 亚洲精品中文字幕乱码 | 国产av剧情md精品麻豆 | 88国产精品欧美一区二区三区 | 亚洲人成网站色7799 | 国产精品久久久久久亚洲影视内衣 | 日韩欧美群交p片內射中文 | 国产两女互慰高潮视频在线观看 | 九九综合va免费看 | 亚洲国产精品无码一区二区三区 | 亚洲成在人网站无码天堂 | 欧美成人高清在线播放 | 蜜桃视频插满18在线观看 | 亚洲区欧美区综合区自拍区 | 日韩在线不卡免费视频一区 | 国产 浪潮av性色四虎 | 亚洲国产欧美日韩精品一区二区三区 | 久久天天躁夜夜躁狠狠 | 在线 国产 欧美 亚洲 天堂 | 色婷婷综合激情综在线播放 | 欧美日韩视频无码一区二区三 | 人人妻人人澡人人爽人人精品 | 亚拍精品一区二区三区探花 | 亚洲中文字幕在线无码一区二区 | 麻豆精产国品 | 中文字幕无码人妻少妇免费 | 漂亮人妻洗澡被公强 日日躁 | 亚洲欧美日韩国产精品一区二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 麻豆国产人妻欲求不满 | 欧美放荡的少妇 | 成人三级无码视频在线观看 | 波多野42部无码喷潮在线 | 在线播放免费人成毛片乱码 | 国产精品亚洲а∨无码播放麻豆 | 三上悠亚人妻中文字幕在线 | 日本精品久久久久中文字幕 | 精品人妻人人做人人爽夜夜爽 | 亚无码乱人伦一区二区 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产乱人偷精品人妻a片 | 综合激情五月综合激情五月激情1 | 无遮挡国产高潮视频免费观看 | 又大又硬又爽免费视频 | 亚洲一区二区三区国产精华液 | 国产精品亚洲一区二区三区喷水 | 精品人妻中文字幕有码在线 | 久久午夜夜伦鲁鲁片无码免费 | 中文字幕乱码中文乱码51精品 | 精品欧美一区二区三区久久久 | 欧美放荡的少妇 | 丁香啪啪综合成人亚洲 | 亚洲一区二区三区无码久久 | 欧美xxxxx精品 | 亚洲中文无码av永久不收费 | 国产农村乱对白刺激视频 | 亚洲熟女一区二区三区 | 无码人妻丰满熟妇区毛片18 | 网友自拍区视频精品 | 久久久久成人片免费观看蜜芽 | 草草网站影院白丝内射 | 在线观看国产一区二区三区 | 日本乱人伦片中文三区 | 国产另类ts人妖一区二区 | 亚洲色无码一区二区三区 | 国产sm调教视频在线观看 | 欧美激情内射喷水高潮 | 久久人人爽人人人人片 | 精品无码国产一区二区三区av | 国产无套内射久久久国产 | 日本免费一区二区三区最新 | 99国产精品白浆在线观看免费 | 国产 浪潮av性色四虎 | 久久综合九色综合欧美狠狠 | 久久久精品人妻久久影视 | 国产性生大片免费观看性 | aⅴ亚洲 日韩 色 图网站 播放 | 无码国产色欲xxxxx视频 | 欧美激情综合亚洲一二区 | 国产香蕉尹人综合在线观看 | 欧美日本免费一区二区三区 | 久久亚洲国产成人精品性色 | 亚无码乱人伦一区二区 | 亚洲精品成a人在线观看 | 久久久婷婷五月亚洲97号色 | 18黄暴禁片在线观看 | 俺去俺来也在线www色官网 | 天天拍夜夜添久久精品 | 在线精品亚洲一区二区 | 老头边吃奶边弄进去呻吟 | 狂野欧美性猛xxxx乱大交 | 国产综合在线观看 | 成年美女黄网站色大免费全看 | 欧美freesex黑人又粗又大 | 亚洲中文字幕乱码av波多ji | 国产偷抇久久精品a片69 | 国产口爆吞精在线视频 | 扒开双腿吃奶呻吟做受视频 | 精品人人妻人人澡人人爽人人 | 亚洲色欲色欲天天天www | 亚洲精品国产第一综合99久久 | 丝袜 中出 制服 人妻 美腿 | 成人性做爰aaa片免费看不忠 | 国产suv精品一区二区五 | 无码人妻av免费一区二区三区 | 亚洲国产精品无码久久久久高潮 | 久久精品人人做人人综合试看 | 国产激情艳情在线看视频 | 亚洲精品一区二区三区大桥未久 | 欧美人与善在线com | 日韩精品无码一区二区中文字幕 | 日本一卡2卡3卡四卡精品网站 | 久久综合香蕉国产蜜臀av | 久久国产精品二国产精品 | 日韩亚洲欧美中文高清在线 | 国产片av国语在线观看 | 成人无码视频免费播放 | 欧美日本精品一区二区三区 | 中文字幕乱码亚洲无线三区 | 国产特级毛片aaaaaaa高清 | 强辱丰满人妻hd中文字幕 | 国产手机在线αⅴ片无码观看 | 欧洲熟妇精品视频 | 55夜色66夜色国产精品视频 | 人妻aⅴ无码一区二区三区 | 欧美熟妇另类久久久久久不卡 | 亚洲精品一区三区三区在线观看 | 久久国产精品萌白酱免费 | 欧美精品免费观看二区 | 狂野欧美性猛交免费视频 | 成人无码影片精品久久久 | 日韩av无码一区二区三区不卡 | 亚洲国产精品久久久天堂 | 日韩人妻系列无码专区 | 67194成是人免费无码 | 青青久在线视频免费观看 | 国色天香社区在线视频 | 日韩精品无码一本二本三本色 | 亚洲最大成人网站 | 青青青手机频在线观看 | 日日摸天天摸爽爽狠狠97 | 亚洲经典千人经典日产 | 在线精品亚洲一区二区 | 无码一区二区三区在线 | 乌克兰少妇xxxx做受 | 中文字幕无码免费久久9一区9 | 亚洲国产精品一区二区美利坚 | 国产精品毛多多水多 | 国产亚洲视频中文字幕97精品 | 国产精品丝袜黑色高跟鞋 | 国产乱码精品一品二品 | 亚洲中文字幕成人无码 | 国产精品理论片在线观看 | 波多野结衣av在线观看 | 国产香蕉97碰碰久久人人 | 国产精品久久久久影院嫩草 | 中文字幕久久久久人妻 | 99久久99久久免费精品蜜桃 | 欧美日本日韩 | 久久精品国产99久久6动漫 | 国产无套粉嫩白浆在线 | 精品国产aⅴ无码一区二区 | 又大又硬又黄的免费视频 | 亚洲小说图区综合在线 | 欧美日韩久久久精品a片 | 无码吃奶揉捏奶头高潮视频 | 狠狠噜狠狠狠狠丁香五月 | 久久久久免费看成人影片 | 99riav国产精品视频 | 欧美性色19p | 精品亚洲韩国一区二区三区 | 国产精品久久久久无码av色戒 | 未满小14洗澡无码视频网站 | 成人av无码一区二区三区 | 国产人妻久久精品二区三区老狼 | 性做久久久久久久免费看 | 精品国产福利一区二区 | 中国大陆精品视频xxxx | 亚洲成a人片在线观看日本 | 国产精品99爱免费视频 | 一本久久伊人热热精品中文字幕 | 亚洲一区二区三区偷拍女厕 | 国产极品美女高潮无套在线观看 | 成熟妇人a片免费看网站 | 人人澡人摸人人添 | 国产乱子伦视频在线播放 | 人人妻人人澡人人爽欧美一区九九 | 亚洲呦女专区 | 亚洲 日韩 欧美 成人 在线观看 | 荫蒂添的好舒服视频囗交 | 无码午夜成人1000部免费视频 | 欧美性黑人极品hd | 欧洲vodafone精品性 | 亚洲一区二区三区无码久久 | 亚洲国产精品美女久久久久 | 亚洲成色在线综合网站 | 人妻有码中文字幕在线 | 色综合天天综合狠狠爱 | 欧美一区二区三区视频在线观看 | 色五月五月丁香亚洲综合网 | 日韩精品成人一区二区三区 | 精品无人国产偷自产在线 | 夜夜高潮次次欢爽av女 | 99er热精品视频 | 国产精品沙发午睡系列 | 乱码午夜-极国产极内射 | 国产香蕉97碰碰久久人人 | 国产人妻精品一区二区三区不卡 | 最近免费中文字幕中文高清百度 | 亚洲国产欧美在线成人 | 亚洲色偷偷男人的天堂 | 高潮喷水的毛片 | 香蕉久久久久久av成人 | 亚洲天堂2017无码中文 | 中文字幕无码人妻少妇免费 | 亚洲码国产精品高潮在线 | 国产精品多人p群无码 | 亚洲自偷自拍另类第1页 | 少妇厨房愉情理9仑片视频 | 麻花豆传媒剧国产免费mv在线 | 俺去俺来也在线www色官网 | 久久久久se色偷偷亚洲精品av | 色婷婷综合激情综在线播放 | 黑人巨大精品欧美一区二区 | 精品久久久久久人妻无码中文字幕 | 亚洲精品国偷拍自产在线麻豆 | 色婷婷香蕉在线一区二区 | 国产人妻精品午夜福利免费 | 午夜精品一区二区三区的区别 | 国产在线一区二区三区四区五区 | 亚洲国产av精品一区二区蜜芽 | 中文字幕无码日韩专区 | 久久精品99久久香蕉国产色戒 | 亚洲精品成人av在线 | 国产综合色产在线精品 | 亚洲综合久久一区二区 | 国产一区二区三区精品视频 | 久久久精品456亚洲影院 | 国产精品久久久久久亚洲毛片 | 波多野结衣一区二区三区av免费 | 激情内射亚州一区二区三区爱妻 | 国产人妻人伦精品1国产丝袜 | 欧美猛少妇色xxxxx | 国产av人人夜夜澡人人爽麻豆 | 国产激情精品一区二区三区 | 乌克兰少妇性做爰 | 欧美xxxxx精品 | 少女韩国电视剧在线观看完整 | 亚洲综合另类小说色区 | 丁香花在线影院观看在线播放 | 欧美日韩在线亚洲综合国产人 | 中文字幕亚洲情99在线 | 国内老熟妇对白xxxxhd | 亚洲精品欧美二区三区中文字幕 | 东京热无码av男人的天堂 | 性欧美熟妇videofreesex | 亚洲精品国偷拍自产在线观看蜜桃 | 天天综合网天天综合色 | 狠狠躁日日躁夜夜躁2020 | 亚洲爆乳无码专区 | 日本丰满护士爆乳xxxx | 精品欧美一区二区三区久久久 | 人妻aⅴ无码一区二区三区 | 中文字幕av日韩精品一区二区 | 亚洲人成网站免费播放 | 国产亚洲精品久久久久久 | 天堂а√在线中文在线 | 国产精品爱久久久久久久 | 亚洲日韩av一区二区三区四区 | 国产人妻精品一区二区三区不卡 | 国产成人亚洲综合无码 | 无套内射视频囯产 | 国产av一区二区三区最新精品 | 日韩av激情在线观看 | 国产精品怡红院永久免费 | 中文字幕无码乱人伦 | 亚洲日本va午夜在线电影 | 色狠狠av一区二区三区 | 国产乱子伦视频在线播放 | 人妻人人添人妻人人爱 | 欧美日韩视频无码一区二区三 | 国产特级毛片aaaaaa高潮流水 | 国产猛烈高潮尖叫视频免费 | aⅴ亚洲 日韩 色 图网站 播放 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲无人区午夜福利码高清完整版 | 色偷偷人人澡人人爽人人模 | 熟女少妇在线视频播放 | 高清无码午夜福利视频 | 成人三级无码视频在线观看 | 欧美真人作爱免费视频 | 国产特级毛片aaaaaaa高清 | 国产成人亚洲综合无码 | 久久久久久国产精品无码下载 | 亚洲中文字幕无码一久久区 | 永久免费精品精品永久-夜色 | 性欧美大战久久久久久久 | 草草网站影院白丝内射 | 亚洲中文无码av永久不收费 | 我要看www免费看插插视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 欧美日韩久久久精品a片 | 成人免费无码大片a毛片 | 国产精品爱久久久久久久 | 少妇无码一区二区二三区 | 国产av人人夜夜澡人人爽麻豆 | 亚洲啪av永久无码精品放毛片 | 亚洲热妇无码av在线播放 | 亚洲国产成人a精品不卡在线 | 国产女主播喷水视频在线观看 | 国产凸凹视频一区二区 | 精品乱子伦一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 熟女俱乐部五十路六十路av | 曰韩无码二三区中文字幕 | 三上悠亚人妻中文字幕在线 | 精品成人av一区二区三区 | 精品无码av一区二区三区 | 国产真实伦对白全集 | 亚洲午夜无码久久 | 少女韩国电视剧在线观看完整 | 免费人成在线视频无码 | 国产三级精品三级男人的天堂 | 乌克兰少妇性做爰 | 国产成人精品久久亚洲高清不卡 | 亚洲国产精品毛片av不卡在线 | 最新国产麻豆aⅴ精品无码 | 国产片av国语在线观看 | 日本一卡二卡不卡视频查询 | 欧美精品在线观看 | 18无码粉嫩小泬无套在线观看 | 一本色道久久综合亚洲精品不卡 | 东京一本一道一二三区 | 日本高清一区免费中文视频 | 亚洲区欧美区综合区自拍区 | 少妇性l交大片欧洲热妇乱xxx | 无码国产乱人伦偷精品视频 | 无码成人精品区在线观看 | 国产亚洲视频中文字幕97精品 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产av一区二区三区最新精品 | 熟妇女人妻丰满少妇中文字幕 | 国产成人无码a区在线观看视频app | 亚洲爆乳精品无码一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 日本va欧美va欧美va精品 | 88国产精品欧美一区二区三区 | aa片在线观看视频在线播放 | 国精产品一品二品国精品69xx | 无码吃奶揉捏奶头高潮视频 | 国产激情艳情在线看视频 | 国产真实乱对白精彩久久 | 久久亚洲国产成人精品性色 | 日本va欧美va欧美va精品 | 乱码av麻豆丝袜熟女系列 | 久久久久久久人妻无码中文字幕爆 | 久久精品无码一区二区三区 | 久青草影院在线观看国产 | 丰满护士巨好爽好大乳 | 亚洲七七久久桃花影院 | 国产精品视频免费播放 | 无码吃奶揉捏奶头高潮视频 | 好男人社区资源 | 女高中生第一次破苞av | 亚洲日韩中文字幕在线播放 | 性生交大片免费看女人按摩摩 | 国产精品人妻一区二区三区四 | 疯狂三人交性欧美 | av无码久久久久不卡免费网站 | 精品无码国产一区二区三区av | 亚洲精品国产精品乱码视色 | 四虎永久在线精品免费网址 | 日本va欧美va欧美va精品 | 国产成人久久精品流白浆 | 国产成人精品一区二区在线小狼 | 国内精品一区二区三区不卡 | 精品 日韩 国产 欧美 视频 | 日韩无套无码精品 | 国产av无码专区亚洲a∨毛片 | 亚洲精品一区二区三区大桥未久 | 黑人巨大精品欧美一区二区 | 最新国产麻豆aⅴ精品无码 | 国产成人无码av一区二区 | 曰韩无码二三区中文字幕 | 亚洲综合无码一区二区三区 | 无码av最新清无码专区吞精 | 狠狠噜狠狠狠狠丁香五月 | 国产在线精品一区二区高清不卡 | 婷婷五月综合缴情在线视频 | 久久精品国产精品国产精品污 | 又湿又紧又大又爽a视频国产 | 国产激情一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 日韩精品无码一区二区中文字幕 | 无码任你躁久久久久久久 | 亚洲一区二区三区无码久久 | 亚洲毛片av日韩av无码 | 日韩精品乱码av一区二区 | 亚洲一区二区三区偷拍女厕 | 天堂亚洲2017在线观看 | 久青草影院在线观看国产 | 99久久久国产精品无码免费 | 成人aaa片一区国产精品 | av人摸人人人澡人人超碰下载 | 国产无av码在线观看 | 中文字幕无码免费久久99 | 精品国产精品久久一区免费式 | 日产国产精品亚洲系列 | 欧美成人高清在线播放 | 亚洲七七久久桃花影院 | 乱中年女人伦av三区 | 免费观看的无遮挡av | 一本加勒比波多野结衣 | 免费人成在线观看网站 | 国产成人无码区免费内射一片色欲 | 娇妻被黑人粗大高潮白浆 | 中文无码伦av中文字幕 | 色综合天天综合狠狠爱 | 成人无码视频在线观看网站 | 久久久久亚洲精品男人的天堂 | 人人妻人人澡人人爽欧美一区九九 | 亚洲一区二区三区香蕉 | 鲁鲁鲁爽爽爽在线视频观看 | 国产麻豆精品一区二区三区v视界 | 人人妻人人藻人人爽欧美一区 | av无码电影一区二区三区 | 日本又色又爽又黄的a片18禁 | 婷婷丁香六月激情综合啪 | 大屁股大乳丰满人妻 | 中文毛片无遮挡高清免费 | 搡女人真爽免费视频大全 | 娇妻被黑人粗大高潮白浆 | 999久久久国产精品消防器材 | 亚洲成av人片在线观看无码不卡 | 亚洲国产欧美国产综合一区 | 国产手机在线αⅴ片无码观看 | 欧美亚洲日韩国产人成在线播放 | 国产精品对白交换视频 | 欧美兽交xxxx×视频 | 亚洲综合伊人久久大杳蕉 | 国产人妻人伦精品 | 精品无人国产偷自产在线 | 国产成人精品三级麻豆 | 欧美老熟妇乱xxxxx | 男女爱爱好爽视频免费看 | 极品尤物被啪到呻吟喷水 | 中文无码成人免费视频在线观看 | 国产亚洲精品久久久ai换 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产成人综合在线女婷五月99播放 | 国产情侣作爱视频免费观看 | 久在线观看福利视频 | 中国女人内谢69xxxx | 国产超碰人人爽人人做人人添 | 国产高清不卡无码视频 | 亚洲色成人中文字幕网站 | 欧美变态另类xxxx | 天堂久久天堂av色综合 | 爆乳一区二区三区无码 | 黑人巨大精品欧美黑寡妇 | 美女毛片一区二区三区四区 | 成人免费视频视频在线观看 免费 | 四虎4hu永久免费 | 中文字幕av无码一区二区三区电影 | 中文字幕av无码一区二区三区电影 | 97夜夜澡人人爽人人喊中国片 | 国产激情无码一区二区 | 中文字幕av伊人av无码av | 亚洲欧美日韩成人高清在线一区 | 曰韩少妇内射免费播放 | 男女爱爱好爽视频免费看 | 国产精品怡红院永久免费 | 免费播放一区二区三区 | 免费无码一区二区三区蜜桃大 | 人妻少妇精品视频专区 | 国産精品久久久久久久 | 国产成人精品必看 | 2019午夜福利不卡片在线 | 日本大乳高潮视频在线观看 | 亚洲国产精品久久人人爱 | 国产97在线 | 亚洲 | 日本精品少妇一区二区三区 | 东京无码熟妇人妻av在线网址 | 国产午夜无码视频在线观看 | 日本一本二本三区免费 | 高清国产亚洲精品自在久久 | 无码精品国产va在线观看dvd | 中文字幕无线码 | 欧美放荡的少妇 | 在线 国产 欧美 亚洲 天堂 | 97无码免费人妻超级碰碰夜夜 | 国产精品igao视频网 | 亚洲综合精品香蕉久久网 | 色综合久久久久综合一本到桃花网 | 天堂亚洲2017在线观看 | av香港经典三级级 在线 | 免费无码av一区二区 | 日韩欧美群交p片內射中文 | 少妇性俱乐部纵欲狂欢电影 | 国产午夜亚洲精品不卡 | 又大又紧又粉嫩18p少妇 | 人人澡人人妻人人爽人人蜜桃 | 成人无码视频免费播放 | 啦啦啦www在线观看免费视频 | 国产超级va在线观看视频 | 亚洲成av人影院在线观看 | 久久亚洲日韩精品一区二区三区 | 兔费看少妇性l交大片免费 | 日本又色又爽又黄的a片18禁 | 免费乱码人妻系列无码专区 | 亚洲国产午夜精品理论片 | 少妇无套内谢久久久久 | 无码av最新清无码专区吞精 | 国产午夜福利100集发布 | 性色av无码免费一区二区三区 | 成人aaa片一区国产精品 | 精品人人妻人人澡人人爽人人 | 久久精品视频在线看15 | 黑人玩弄人妻中文在线 | 久久精品99久久香蕉国产色戒 | 成在人线av无码免费 | 国产精品亚洲一区二区三区喷水 | 小泽玛莉亚一区二区视频在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲中文字幕无码中文字在线 | 西西人体www44rt大胆高清 | 免费无码一区二区三区蜜桃大 | 1000部夫妻午夜免费 | 国产一区二区三区四区五区加勒比 | 久久久中文字幕日本无吗 | 成人无码精品1区2区3区免费看 | 精品午夜福利在线观看 | 免费人成在线视频无码 | 丝袜 中出 制服 人妻 美腿 | 欧美精品无码一区二区三区 | 天堂а√在线中文在线 | 国内少妇偷人精品视频 | 精品国产一区二区三区av 性色 | 成 人 网 站国产免费观看 | 高中生自慰www网站 | 人人爽人人澡人人高潮 | 久久精品国产大片免费观看 | 内射巨臀欧美在线视频 | 亚洲精品鲁一鲁一区二区三区 | 国产办公室秘书无码精品99 | 日韩av无码一区二区三区不卡 | 荫蒂添的好舒服视频囗交 | 97久久国产亚洲精品超碰热 | 国产精品久久国产精品99 | 日韩欧美成人免费观看 | 九月婷婷人人澡人人添人人爽 | 欧美丰满熟妇xxxx | 成人无码影片精品久久久 | 日本在线高清不卡免费播放 | 国产亲子乱弄免费视频 | 无码人妻精品一区二区三区下载 | 午夜福利不卡在线视频 | 男女猛烈xx00免费视频试看 | 国产av人人夜夜澡人人爽麻豆 | a在线亚洲男人的天堂 | 亚洲欧美日韩成人高清在线一区 | 国产热a欧美热a在线视频 | 一本一道久久综合久久 | 狠狠综合久久久久综合网 | 国产麻豆精品精东影业av网站 | 日本丰满护士爆乳xxxx | 欧美人与物videos另类 | av香港经典三级级 在线 | 国产深夜福利视频在线 | 亚洲日韩av一区二区三区中文 | 成人精品一区二区三区中文字幕 | 久久久久se色偷偷亚洲精品av | 午夜精品久久久内射近拍高清 | 人妻少妇精品无码专区二区 | 国产精品久久国产精品99 | 激情亚洲一区国产精品 | av无码不卡在线观看免费 | 亚洲大尺度无码无码专区 | 精品国产国产综合精品 | 免费看男女做好爽好硬视频 | 又粗又大又硬又长又爽 | 久久精品国产一区二区三区肥胖 | 漂亮人妻洗澡被公强 日日躁 | 人人妻人人藻人人爽欧美一区 | 久久亚洲中文字幕无码 | 中文字幕 亚洲精品 第1页 | 中文字幕av日韩精品一区二区 | 性生交大片免费看l | 欧美性生交xxxxx久久久 | 国产精品沙发午睡系列 | 亚拍精品一区二区三区探花 | 少妇性荡欲午夜性开放视频剧场 | 国产尤物精品视频 | 又黄又爽又色的视频 | 亚洲国产精品成人久久蜜臀 | 少妇性荡欲午夜性开放视频剧场 | 午夜福利试看120秒体验区 | 欧美黑人乱大交 | 高清不卡一区二区三区 | 亚洲色偷偷偷综合网 | 国内精品久久毛片一区二区 | 精品一区二区三区波多野结衣 | а√天堂www在线天堂小说 | 国语精品一区二区三区 | 装睡被陌生人摸出水好爽 | 亚洲中文字幕乱码av波多ji | 18禁止看的免费污网站 | 日本熟妇乱子伦xxxx | 在线精品国产一区二区三区 | 久久综合久久自在自线精品自 | 中文字幕无码免费久久9一区9 | 亚洲小说图区综合在线 | 少妇邻居内射在线 | 男人和女人高潮免费网站 | 国产成人综合在线女婷五月99播放 | 亚洲 a v无 码免 费 成 人 a v | 精品国产精品久久一区免费式 | 久久精品国产一区二区三区肥胖 | 亚洲s码欧洲m码国产av | 人妻无码αv中文字幕久久琪琪布 | 性开放的女人aaa片 | 伊人久久婷婷五月综合97色 | 天天综合网天天综合色 | 强伦人妻一区二区三区视频18 | 国产成人一区二区三区在线观看 | 天天躁日日躁狠狠躁免费麻豆 | 图片区 小说区 区 亚洲五月 | 又大又黄又粗又爽的免费视频 | 97精品国产97久久久久久免费 | 欧美日韩综合一区二区三区 | 国产又爽又黄又刺激的视频 | 中文字幕 亚洲精品 第1页 | 风流少妇按摩来高潮 | 亚洲人成影院在线无码按摩店 | 午夜精品一区二区三区在线观看 | 日日摸天天摸爽爽狠狠97 | 精品久久久久香蕉网 | 亚洲欧美精品aaaaaa片 | 午夜精品久久久久久久 | 国产农村乱对白刺激视频 | 久久久精品国产sm最大网站 | 亚洲人成网站免费播放 | 天堂а√在线地址中文在线 | 四虎4hu永久免费 | 狠狠综合久久久久综合网 | 亚洲日韩av一区二区三区中文 | 人妻aⅴ无码一区二区三区 | 欧美人与禽猛交狂配 | 日本饥渴人妻欲求不满 | 亚洲理论电影在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 无码av岛国片在线播放 | 日本大乳高潮视频在线观看 | 日本饥渴人妻欲求不满 | yw尤物av无码国产在线观看 | www一区二区www免费 | 狠狠色欧美亚洲狠狠色www | 人妻熟女一区 | 日产精品高潮呻吟av久久 | 熟女体下毛毛黑森林 | 无码人妻久久一区二区三区不卡 | 男人的天堂2018无码 | 1000部啪啪未满十八勿入下载 | 国产片av国语在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产精品久久久一区二区三区 | 东京无码熟妇人妻av在线网址 | 色综合天天综合狠狠爱 | 国产激情一区二区三区 | 中文字幕亚洲情99在线 | 强开小婷嫩苞又嫩又紧视频 | 丰腴饱满的极品熟妇 | 小sao货水好多真紧h无码视频 | 免费无码一区二区三区蜜桃大 | 中文字幕无码免费久久99 | 久久午夜无码鲁丝片午夜精品 | 国产亚洲欧美日韩亚洲中文色 | 装睡被陌生人摸出水好爽 | 久久国产精品偷任你爽任你 | 人人爽人人澡人人人妻 | 少妇无套内谢久久久久 | 无人区乱码一区二区三区 | 青春草在线视频免费观看 | 天天拍夜夜添久久精品 | 国产乱人伦偷精品视频 | 久激情内射婷内射蜜桃人妖 | 熟妇人妻无码xxx视频 | 亚洲 a v无 码免 费 成 人 a v | 色情久久久av熟女人妻网站 | 国产人成高清在线视频99最全资源 | 国产精品资源一区二区 | 国产午夜无码精品免费看 | 中文字幕日韩精品一区二区三区 | 日韩亚洲欧美中文高清在线 | 亚洲一区二区三区四区 | 男女作爱免费网站 | 国内老熟妇对白xxxxhd | 日韩欧美群交p片內射中文 | 草草网站影院白丝内射 | 老熟妇仑乱视频一区二区 | 亚洲伊人久久精品影院 | 特级做a爰片毛片免费69 | 亚洲国产成人av在线观看 | 亚洲精品成人福利网站 | 国产真人无遮挡作爱免费视频 | 狠狠cao日日穞夜夜穞av | a在线观看免费网站大全 | 2019午夜福利不卡片在线 | 免费观看黄网站 | 四虎永久在线精品免费网址 | 人人爽人人澡人人高潮 | 欧美日韩一区二区免费视频 | 一本色道婷婷久久欧美 | 少妇性荡欲午夜性开放视频剧场 | 国产精品久久久久久久9999 | 久久99热只有频精品8 | 亚洲一区二区三区含羞草 | 亚洲日本va午夜在线电影 | 久久精品无码一区二区三区 | 日日碰狠狠丁香久燥 | 日本饥渴人妻欲求不满 | 亚洲日韩av一区二区三区中文 | 亚洲国产精品久久久久久 | 台湾无码一区二区 | 国产av久久久久精东av | 婷婷五月综合激情中文字幕 | 国产人妻精品午夜福利免费 | 久久99国产综合精品 | 欧美xxxxx精品 | 成人一在线视频日韩国产 | 欧美第一黄网免费网站 | 性生交大片免费看女人按摩摩 | 中文字幕精品av一区二区五区 | 极品嫩模高潮叫床 | 男人和女人高潮免费网站 | 国产精品久久福利网站 | 中文字幕乱码中文乱码51精品 | 亚洲精品国产第一综合99久久 | 国产精品丝袜黑色高跟鞋 | 老熟女重囗味hdxx69 | 亚洲精品久久久久中文第一幕 | 久久www免费人成人片 | 女人和拘做爰正片视频 | 亚洲色www成人永久网址 | 人人妻人人澡人人爽人人精品浪潮 | 日韩精品乱码av一区二区 | 国产精品久久久久久亚洲毛片 | 精品久久久久久人妻无码中文字幕 | 久久久精品国产sm最大网站 | 国产精品自产拍在线观看 | 在线a亚洲视频播放在线观看 | 日日橹狠狠爱欧美视频 | 成人综合网亚洲伊人 | 久在线观看福利视频 | 亚洲区欧美区综合区自拍区 | 女人被爽到呻吟gif动态图视看 | a在线亚洲男人的天堂 | 国产香蕉尹人综合在线观看 | 日本一区二区三区免费播放 | 露脸叫床粗话东北少妇 | 一本久久伊人热热精品中文字幕 | 成人精品一区二区三区中文字幕 | 国产综合在线观看 | 久久久av男人的天堂 | 成人免费无码大片a毛片 | 国产又粗又硬又大爽黄老大爷视 | 日韩少妇白浆无码系列 | 色五月丁香五月综合五月 | 国产精品无码mv在线观看 | 97人妻精品一区二区三区 | 亚洲va中文字幕无码久久不卡 | 欧美真人作爱免费视频 | 在线а√天堂中文官网 | 麻豆精产国品 | 亚洲日韩精品欧美一区二区 | 中文字幕人妻无码一夲道 | 国产sm调教视频在线观看 | 国产精品人人爽人人做我的可爱 | 狂野欧美性猛xxxx乱大交 | 高清不卡一区二区三区 | 欧美人与牲动交xxxx | 狠狠噜狠狠狠狠丁香五月 | 男人的天堂2018无码 | 狂野欧美激情性xxxx | 少妇厨房愉情理9仑片视频 | 亚洲а∨天堂久久精品2021 | 亚洲精品欧美二区三区中文字幕 | 影音先锋中文字幕无码 | 亚洲成a人片在线观看日本 | 亚洲中文字幕无码一久久区 | 久久久精品国产sm最大网站 | 午夜精品久久久久久久久 | 亚洲欧美精品伊人久久 | 免费国产黄网站在线观看 | 永久黄网站色视频免费直播 | 国产肉丝袜在线观看 | 无码吃奶揉捏奶头高潮视频 | 男人扒开女人内裤强吻桶进去 | 女人被男人躁得好爽免费视频 | 亚洲国产欧美国产综合一区 | 无遮无挡爽爽免费视频 | 国产成人精品优优av | 久久久久久久久888 | 在线观看欧美一区二区三区 | 成人欧美一区二区三区 | 亚洲国精产品一二二线 | 成人片黄网站色大片免费观看 | 精品欧美一区二区三区久久久 | 中文字幕日产无线码一区 | 国产激情精品一区二区三区 | 少妇无套内谢久久久久 | 在线播放无码字幕亚洲 | 亚洲精品久久久久久一区二区 | www国产亚洲精品久久网站 | 熟妇人妻无乱码中文字幕 | 久久午夜无码鲁丝片秋霞 | 久久精品国产99久久6动漫 | 亚洲 激情 小说 另类 欧美 | 亚洲の无码国产の无码影院 | 欧美激情内射喷水高潮 | 久久久久亚洲精品中文字幕 | 国产精品久久国产精品99 | 丰满护士巨好爽好大乳 | 亚洲性无码av中文字幕 | 天天av天天av天天透 | 男女爱爱好爽视频免费看 | 国内揄拍国内精品少妇国语 | 无码人妻少妇伦在线电影 | 波多野结衣av一区二区全免费观看 | 日本熟妇浓毛 | 亚洲国产精品久久久久久 | 国产成人无码a区在线观看视频app | 久久久国产精品无码免费专区 | 成人性做爰aaa片免费看不忠 | 欧美乱妇无乱码大黄a片 | 99er热精品视频 | 沈阳熟女露脸对白视频 | 国产农村乱对白刺激视频 | 国产精品久久久av久久久 | 久久国产精品_国产精品 | 国产精品无套呻吟在线 | 国产乱人偷精品人妻a片 | 久久人人97超碰a片精品 | 久久久久99精品国产片 | 国产色精品久久人妻 | 精品国偷自产在线 | 国产成人无码av片在线观看不卡 | 日韩欧美群交p片內射中文 | 久久久亚洲欧洲日产国码αv | 国产熟妇另类久久久久 | 无码人妻精品一区二区三区下载 | 高中生自慰www网站 | 亚洲自偷自拍另类第1页 | 午夜精品久久久久久久久 | 永久免费观看美女裸体的网站 | 亚洲の无码国产の无码步美 | 性欧美videos高清精品 | 久久人人爽人人爽人人片av高清 | 免费人成在线观看网站 | 精品人妻av区 | 国产香蕉尹人综合在线观看 | 国产亚洲精品久久久闺蜜 | 国产精品无码mv在线观看 | 亚洲另类伦春色综合小说 | 国产午夜福利亚洲第一 | 国内老熟妇对白xxxxhd | 亚洲 另类 在线 欧美 制服 | 国产精品久久久久7777 | 亚洲狠狠婷婷综合久久 | 亚洲高清偷拍一区二区三区 | 久在线观看福利视频 | 中文字幕无码av激情不卡 | 无码人中文字幕 | 中文字幕无码av波多野吉衣 | 99er热精品视频 | 亚洲中文无码av永久不收费 | 曰韩少妇内射免费播放 | 人妻少妇精品久久 | 一个人看的www免费视频在线观看 | 免费视频欧美无人区码 | 国产乡下妇女做爰 | 日韩人妻少妇一区二区三区 | 精品无人区无码乱码毛片国产 | 日韩欧美成人免费观看 | 88国产精品欧美一区二区三区 | 色综合天天综合狠狠爱 | 亚洲毛片av日韩av无码 | 亚洲精品中文字幕乱码 | 最新版天堂资源中文官网 | 人妻少妇被猛烈进入中文字幕 | 97夜夜澡人人双人人人喊 | 国产成人精品一区二区在线小狼 | 精品国精品国产自在久国产87 | 成人影院yy111111在线观看 | 精品日本一区二区三区在线观看 | 无码一区二区三区在线观看 | 久久久久亚洲精品中文字幕 | 成人精品一区二区三区中文字幕 | 丰满肥臀大屁股熟妇激情视频 | 无码成人精品区在线观看 | 色综合久久88色综合天天 | 亚洲区小说区激情区图片区 | 又紧又大又爽精品一区二区 | 中文无码精品a∨在线观看不卡 | 成人毛片一区二区 | 国产亚洲美女精品久久久2020 | aⅴ在线视频男人的天堂 | 免费网站看v片在线18禁无码 | 久久精品人妻少妇一区二区三区 | 奇米影视888欧美在线观看 | 国产精品视频免费播放 | 亚洲人亚洲人成电影网站色 | 99国产欧美久久久精品 |