日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

mongodb连接失败_MongoDB 基础入门

發布時間:2025/3/19 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongodb连接失败_MongoDB 基础入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mongodb

一、NoSQL 簡介

NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。

在現代的計算系統上每天網絡上都會產生龐大的數據量。

這些數據有很大一部分是由關系數據庫管理系統(RDMBSs)來處理。 1970年 E.F.Codd's提出的關系模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。

通過應用實踐證明,關系模型是非常適合于客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術。

NoSQL 是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念無疑是一種全新的思維的注入。

1.1 關系型數據庫遵循ACID規則

事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:

1、A (Atomicity) 原子性 原子性很容易理解,也就是說事務里的所有操作要么全部做完,要么都不做,事務成功的條件是事務里的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。

比如銀行轉賬,從A賬戶轉100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。

2、C (Consistency) 一致性 一致性也比較容易理解,也就是說數據庫要一直處于一致的狀態,事務的運行不會改變數據庫原本的一致性約束。

例如現有完整性約束a+b=10,如果一個事務改變了a,那么必須得改變b,使得事務結束后依然滿足a+b=10,否則事務失敗。

3、I (Isolation) 獨立性 所謂的獨立性是指并發的事務之間不會互相影響,如果一個事務要訪問的數據正在被另外一個事務修改,只要另外一個事務未提交,它所訪問的數據就不受未提交事務的影響。 比如現有有個交易是從A賬戶轉100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 持久性 持久性是指一旦事務提交后,它所做的修改將會永久的保存在數據庫上,即使出現宕機也不會丟失。

1.2 分布式系統

分布式系統(distributed system)由多臺計算機和通信的軟件組件通過計算機網絡連接(本地網絡或廣域網)組成。

分布式系統是建立在網絡之上的軟件系統。正是因為軟件的特性,所以分布式系統具有高度的內聚性和透明性。

因此,網絡和分布式系統之間的區別更多的在于高層軟件(特別是操作系統),而不是硬件。

分布式系統可以應用在在不同的平臺上如:Pc、工作站、局域網和廣域網上等。

1.3 分布式計算的優點

可靠性(容錯) : 分布式計算系統中的一個重要的優點是可靠性。一臺服務器的系統崩潰并不影響到其余的服務器。

可擴展性: 在分布式計算系統可以根據需要增加更多的機器。

資源共享: 共享數據是必不可少的應用,如銀行,預訂系統。

靈活性: 由于該系統是非常靈活的,它很容易安裝,實施和調試新的服務。

更快的速度: 分布式計算系統可以有多臺計算機的計算能力,使得它比其他系統有更快的處理速度。

開放系統: 由于它是開放的系統,本地或者遠程都可以訪問到該服務。

更高的性能: 相較于集中式計算機網絡集群可以提供更高的性能(及更好的性價比)。

1.4分布式計算的缺點

故障排除: : 故障排除和診斷問題。

軟件: 更少的軟件支持是分布式計算系統的主要缺點。

網絡: 網絡基礎設施的問題,包括:傳輸問題,高負載,信息丟失等。

安全性: 開發系統的特性讓分布式計算系統存在著數據的安全性和共享的風險等問題。

什么是NoSQL?

NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。

NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。

為什么使用NoSQL ?

今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發展也卻能很好的處理這些大的數據。

實例

社會化關系網:

Each record: UserID1, UserID2 Separate records: UserID, first_name,last_name, age, gender,... Task: Find all friends of friends of friends of ... friends of a given user.

Wikipedia 頁面 :

Large collection of documents Combination of structured and unstructured data Task: Retrieve all pages regarding athletics of Summer Olympic before 1950.

RDBMS vs NoSQL

RDBMS

  • 高度組織化結構化數據
  • 結構化查詢語言(SQL) (SQL)
  • 數據和關系都存儲在單獨的表中。
  • 數據操縱語言,數據定義語言
  • 嚴格的一致性
  • 基礎事務

NoSQL

  • 代表著不僅僅是SQL
  • 沒有聲明性查詢語言
  • 沒有預定義的模式 -鍵 - 值對存儲,列存儲,文檔存儲,圖形數據庫
  • 最終一致性,而非ACID屬性
  • 非結構化和不可預知的數據
  • CAP定理
  • 高性能,高可用性和可伸縮性

NoSQL 簡史

NoSQL一詞最早出現于1998年,是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關系數據庫。

2009年,Last.fm的Johan Oskarsson發起了一次關于分布式開源數據庫的討論[2],來自Rackspace的Eric Evans再次提出了NoSQL的概念,這時的NoSQL主要指非關系型、分布式、不提供ACID的數據庫設計模式。

2009年在亞特蘭大舉行的"no:sql(east)"討論會是一個里程碑,其口號是"select fun, profit from real_world where relational=false;"。因此,對NoSQL最普遍的解釋是"非關聯型的",強調Key-Value Stores和文檔數據庫的優點,而不是單純的反對RDBMS。

CAP定理(CAP theorem)

在計算機科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對于一個分布式計算系統來說,不可能同時滿足以下三點:

  • 一致性(Consistency) (所有節點在同一時間具有相同的數據)
  • 可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
  • 分隔容忍(Partition tolerance) (系統中任意信息的丟失或失敗不會影響系統的繼續運作)

CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多只能同時較好的滿足兩個。

因此,根據 CAP 原理將 NoSQL 數據庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:

  • CA - 單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大。
  • CP - 滿足一致性,分區容忍必的系統,通常性能不是特別高。
  • AP - 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些。

NoSQL的優點/缺點

優點:

  • - 高可擴展性
  • - 分布式計算
  • - 低成本
  • - 架構的靈活性,半結構化數據
  • - 沒有復雜的關系

缺點:

  • - 沒有標準化
  • - 有限的查詢功能(到目前為止)
  • - 最終一致是不直觀的程序

BASE

BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定義。

CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多只能同時較好的滿足兩個。

BASE是NoSQL數據庫通常對可用性及一致性的弱要求原則:

  • Basically Availble --基本可用
  • Soft-state --軟狀態/柔性事務。 "Soft state" 可以理解為"無連接"的, 而 "Hard state" 是"面向連接"的
  • Eventual Consistency --最終一致性 最終一致性, 也是是 ACID 的最終目的。

ACID vs BASE

ACIDBASE原子性(Atomicity)基本可用(Basically Available)一致性(Consistency)軟狀態/柔性事務(Soft state)隔離性(Isolation)最終一致性 (Eventual consistency)持久性 (Durable)

NoSQL 數據庫分類

類型部分代表特點列存儲HbaseCassandraHypertable顧名思義,是按列存儲數據的。最大的特點是方便存儲結構化和半結構化數據,方便做數據壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢。文檔存儲MongoDBCouchDB文檔存儲一般用類似json的格式存儲,存儲的內容是文檔型的。這樣也就有有機會對某些字段建立索引,實現關系數據庫的某些功能。key-value存儲Tokyo Cabinet / TyrantBerkeley DBMemcacheDBRedis可以通過key快速查詢到其value。一般來說,存儲不管value的格式,照單全收。(Redis包含了其他功能)圖存儲Neo4JFlockDB圖形關系的最佳存儲。使用傳統關系數據庫來解決的話性能低下,而且設計使用不方便。對象存儲db4oVersant通過類似面向對象語言的語法操作數據庫,通過對象的方式存取數據。xml數據庫Berkeley DB XMLBaseX高效的存儲XML數據,并支持XML的內部查詢語法,比如XQuery,Xpath。

二、MongoDB 概念解析

不管我們學習什么數據庫都應該學習其中的基礎概念,在mongodb中基本的概念是文檔、集合、數據庫,下面我們挨個介紹。

下表將幫助您更容易理解Mongo中的一些概念:

SQL術語/概念MongoDB術語/概念解釋/說明databasedatabase數據庫tablecollection數據庫表/集合rowdocument數據記錄行/文檔columnfield數據字段/域indexindex索引table joins表連接,MongoDB不支持primary keyprimary key主鍵,MongoDB自動將_id字段設置為主鍵

通過下圖實例,我們也可以更直觀的的了解Mongo中的一些概念:

2.1 數據庫

一個mongodb中可以建立多個數據庫。

MongoDB的默認數據庫為"db",該數據庫存儲在data目錄中。

MongoDB的單個實例可以容納多個獨立的數據庫,每一個都有自己的集合和權限,不同的數據庫也放置在不同的文件中。

"show dbs" 命令可以顯示所有數據的列表。

$ ./mongo MongoDB shell version: 3.0.6 connecting to: test > show dbs local 0.078GB test 0.078GB >

執行 "db" 命令可以顯示當前數據庫對象或集合。

$ ./mongo MongoDB shell version: 3.0.6 connecting to: test > db test >

運行"use"命令,可以連接到一個指定的數據庫。

> use local switched to db local > db local >

以上實例命令中,"local" 是你要鏈接的數據庫。

在下一個章節我們將詳細講解MongoDB中命令的使用。

數據庫也通過名字來標識。數據庫名可以是滿足以下條件的任意UTF-8字符串。

  • 不能是空字符串("")。
  • 不得含有' '(空格)、.、$、/、和0 (空宇符)。
  • 應全部小寫。
  • 最多64字節。

有一些數據庫名是保留的,可以直接訪問這些有特殊作用的數據庫。

  • admin: 從權限的角度來看,這是"root"數據庫。要是將一個用戶添加到這個數據庫,這個用戶自動繼承所有數據庫的權限。一些特定的服務器端命令也只能從這個數據庫運行,比如列出所有的數據庫或者關閉服務器。
  • local: 這個數據永遠不會被復制,可以用來存儲限于本地單臺服務器的任意集合
  • config: 當Mongo用于分片設置時,config數據庫在內部使用,用于保存分片的相關信息。

2.2 文檔

文檔是一個鍵值(key-value)對(即BSON)。MongoDB 的文檔不需要設置相同的字段,并且相同的字段不需要相同的數據類型,這與關系型數據庫有很大的區別,也是 MongoDB 非常突出的特點。

一個簡單的文檔例子如下:

{"site":"www.runoob.com", "name":"菜鳥教程"}

下表列出了 RDBMS 與 MongoDB 對應的術語:

需要注意的是:

  • 文檔中的鍵/值對是有序的。
  • 文檔中的值不僅可以是在雙引號里面的字符串,還可以是其他幾種數據類型(甚至可以是整個嵌入的文檔)。
  • MongoDB區分類型和大小寫。
  • MongoDB的文檔不能有重復的鍵。
  • 文檔的鍵是字符串。除了少數例外情況,鍵可以使用任意UTF-8字符。
  • 文檔鍵命名規范:

    • 鍵不能含有0 (空字符)。這個字符用來表示鍵的結尾。
    • .和$有特別的意義,只有在特定環境下才能使用。
    • 以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)。

    2.3 集合

    集合就是 MongoDB 文檔組,類似于 RDBMS (關系數據庫管理系統:Relational Database Management System)中的表格。

    集合存在于數據庫中,集合沒有固定的結構,這意味著你在對集合可以插入不同格式和類型的數據,但通常情況下我們插入集合的數據都會有一定的關聯性。

    比如,我們可以將以下不同數據結構的文檔插入到集合中:

    {"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"} {"site":"www.runoob.com","name":"菜鳥教程","num":5}

    當第一個文檔插入時,集合就會被創建。

    合法的集合名

    • 集合名不能是空字符串""。
    • 集合名不能含有0字符(空字符),這個字符表示集合名的結尾。
    • 集合名不能以"system."開頭,這是為系統集合保留的前綴。
    • 用戶創建的集合名字不能含有保留字符。有些驅動程序的確支持在集合名里面包含,這是因為某些系統生成的集合中包含該字符。除非你要訪問這種系統創建的集合,否則千萬不要在名字里出現$。 

    如下實例:

    db.col.findOne()

    capped collections

    Capped collections 就是固定大小的collection。

    它有很高的性能以及隊列過期的特性(過期按照插入的順序). 有點和 "RRD" 概念類似。

    Capped collections是高性能自動的維護對象的插入順序。它非常適合類似記錄日志的功能 和標準的collection不同,你必須要顯式的創建一個capped collection, 指定一個collection的大小,單位是字節。collection的數據存儲空間值提前分配的。

    要注意的是指定的存儲大小包含了數據庫的頭信息。

    db.createCollection("mycoll", {capped:true, size:100000})
    • 在capped collection中,你能添加新的對象。
    • 能進行更新,然而,對象不會增加存儲空間。如果增加,更新就會失敗 。
    • 數據庫不允許進行刪除。使用drop()方法刪除collection所有的行。
    • 注意: 刪除之后,你必須顯式的重新創建這個collection。
    • 在32bit機器中,capped collection最大存儲為1e9( 1X109)個字節。

    2.4 元數據

    數據庫的信息是存儲在集合中。它們使用了系統的命名空間:

    dbname.system.*

    在MongoDB數據庫中名字空間 <dbname>.system.* 是包含多種系統信息的特殊集合(Collection),如下:

    對于修改系統集合中的對象有如下限制。

    在{{system.indexes}}插入數據,可以創建索引。但除此之外該表信息是不可變的(特殊的drop index命令將自動更新相關信息)。

    {{system.users}}是可修改的。 {{system.profile}}是可刪除的。

    2.5 MongoDB 數據類型

    下表為MongoDB中常用的幾種數據類型。

    三、什么是MongoDB ?

    MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。

    在高負載的情況下,添加更多的節點,可以保證服務器性能。

    MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

    MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

    主要特點

    • MongoDB的提供了一個面向文檔存儲,操作起來比較簡單和容易。
    • 你可以在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實現更快的排序。
    • 你可以通過本地或者網絡創建數據鏡像,這使得MongoDB有更強的擴展性。
    • 如果負載的增加(需要更多的存儲空間和更強的處理能力) ,它可以分布在計算機網絡中的其他節點上這就是所謂的分片。
    • Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
    • MongoDb 使用update()命令可以實現替換完成的文檔(數據)或者一些指定的數據字段 。
    • Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操作。
    • Map和Reduce。Map函數調用emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函數進行處理。
    • Map函數和Reduce函數是使用Javascript編寫的,并可以通過db.runCommand或mapreduce命令來執行MapReduce操作。
    • GridFS是MongoDB中的一個內置功能,可以用于存放大量小文件。
    • MongoDB允許在服務端執行腳本,可以用Javascript編寫某個函數,直接在服務端執行,也可以把函數的定義存儲在服務端,下次直接調用即可。
    • MongoDB支持各種編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
    • MongoDB安裝簡單。

    歷史 2007年10月,MongoDB由10gen團隊所發展。2009年2月首度推出。

    • 2012年05月23日,MongoDB2.1 開發分支發布了! 該版本采用全新架構,包含諸多增強。
    • 2012年06月06日,MongoDB 2.0.6 發布,分布式文檔數據庫。
    • 2013年04月23日,MongoDB 2.4.3 發布,此版本包括了一些性能優化,功能增強以及bug修復。
    • 2013年08月20日,MongoDB 2.4.6 發布,是目前最新的穩定版。

    MongoDB 下載

    你可以在mongodb官網下載該安裝包,地址為: http://www.mongodb.org/downloads。MonggoDB支持以下平臺:

    • OS X 32-bit
    • OS X 64-bit
    • Linux 32-bit
    • Linux 64-bit
    • Windows 32-bit
    • Windows 64-bit
    • Solaris i86pc
    • Solaris 64

    MongoDB 工具

    有幾種可用于MongoDB的管理工具。

    監控

    MongoDB提供了網絡和系統監控工具Munin,它作為一個插件應用于MongoDB中。

    Gangila是MongoDB高性能的系統監視的工具,它作為一個插件應用于MongoDB中。

    基于圖形界面的開源工具 Cacti, 用于查看CPU負載, 網絡帶寬利用率,它也提供了一個應用于監控 MongoDB 的插件。

    GUI

    • Fang of Mongo – 網頁式,由Django和jQuery所構成。
    • Futon4Mongo – 一個CouchDB Futon web的mongodb山寨版。
    • Mongo3 – Ruby寫成。
    • MongoHub – 適用于OSX的應用程序。
    • Opricot – 一個基于瀏覽器的MongoDB控制臺, 由PHP撰寫而成。
    • Database Master — Windows的mongodb管理工具
    • RockMongo — 最好的PHP語言的MongoDB管理工具,輕量級, 支持多國語言.

    MongoDB 應用案例

    下面列舉一些公司MongoDB的實際應用:

    • Craiglist上使用MongoDB的存檔數十億條記錄。
    • FourSquare,基于位置的社交網站,在Amazon EC2的服務器上使用MongoDB分享數據。
    • Shutterfly,以互聯網為基礎的社會和個人出版服務,使用MongoDB的各種持久性數據存儲的要求。
    • bit.ly, 一個基于Web的網址縮短服務,使用MongoDB的存儲自己的數據。
    • http://spike.com,一個MTV網絡的聯營公司, http://spike.com使用MongoDB的。
    • Intuit公司,一個為小企業和個人的軟件和服務提供商,為小型企業使用MongoDB的跟蹤用戶的數據。
    • http://sourceforge.net,資源網站查找,創建和發布開源軟件免費,使用MongoDB的后端存儲。
    • http://etsy.com ,一個購買和出售手工制作物品網站,使用MongoDB。
    • 紐約時報,領先的在線新聞門戶網站之一,使用MongoDB。
    • CERN,著名的粒子物理研究所,歐洲核子研究中心大型強子對撞機的數據使用MongoDB。

    四、MongoDB的安裝

    4.1 window平臺安裝 MongoDB

    MongoDB 提供了可用于 32 位和 64 位系統的預編譯二進制包,你可以從MongoDB官網下載安裝,MongoDB 預編譯二進制包下載地址:https://www.mongodb.com/download-center#community

    注意:在 MongoDB 2.2 版本后已經不再支持 Windows XP 系統。最新版本也已經沒有了 32 位系統的安裝文件。

    • MongoDB for Windows 64-bit 適合 64 位的 Windows Server 2008 R2, Windows 7 , 及最新版本的 Window 系統。
    • MongoDB for Windows 32-bit 適合 32 位的 Window 系統及最新的 Windows Vista。 32 位系統上 MongoDB 的數據庫最大為 2GB。
    • MongoDB for Windows 64-bit Legacy 適合 64 位的 Windows Vista, Windows Server 2003, 及 Windows Server 2008 。

    根據你的系統下載 32 位或 64 位的 .msi 文件,下載后雙擊該文件,按操作提示安裝即可。

    安裝過程中,你可以通過點擊 "Custom(自定義)" 按鈕來設置你的安裝目錄。

    下一步安裝 "install mongoDB compass" 不勾選,否則可能要很長時間都一直在執行安裝,MongoDB Compass 是一個圖形界面管理工具,我們可以在后面自己到官網下載安裝,下載地址:https://www.mongodb.com/download-center/compass。

    創建數據目錄

    MongoDB將數據目錄存儲在 db 目錄下。但是這個數據目錄不會主動創建,我們在安裝完成后需要創建它。請注意,數據目錄應該放在根目錄下((如: C: 或者 D: 等 )。

    在本教程中,我們已經在 C 盤安裝了 mongodb,現在讓我們創建一個 data 的目錄然后在 data 目錄里創建 db 目錄。

    c:>cd c: ? c:>mkdir data ? c:>cd data ? c:data>mkdir db ? c:data>cd db ? c:datadb>

    你也可以通過 window 的資源管理器中創建這些目錄,而不一定通過命令行。

    4.1.1 命令行下運行 MongoDB 服務器

    為了從命令提示符下運行 MongoDB 服務器,你必須從 MongoDB 目錄的 bin 目錄中執行 mongod.exe 文件。

    C:mongodbbinmongod --dbpath c:datadb

    如果執行成功,會輸出如下信息:

    2015-09-25T15:54:09.212+0800 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files 2015-09-25T15:54:09.229+0800 I JOURNAL [initandlisten] journal dir=c:datadbj ournal 2015-09-25T15:54:09.237+0800 I JOURNAL [initandlisten] recover : no journal fil es present, no recovery needed 2015-09-25T15:54:09.290+0800 I JOURNAL [durability] Durability thread started 2015-09-25T15:54:09.294+0800 I CONTROL [initandlisten] MongoDB starting : pid=2 488 port=27017 dbpath=c:datadb 64-bit host=WIN-1VONBJOCE88 2015-09-25T15:54:09.296+0800 I CONTROL [initandlisten] targetMinOS: Windows 7/W indows Server 2008 R2 2015-09-25T15:54:09.298+0800 I CONTROL [initandlisten] db version v3.0.6 ……

    4.1.2 連接MongoDB

    我們可以在命令窗口中運行 mongo.exe 命令即可連接上 MongoDB,執行如下命令:

    C:mongodbbinmongo.exe

    4.1.3 配置 MongoDB 服務

    管理員模式打開命令行窗口

    創建目錄,執行下面的語句來創建數據庫和日志文件的目錄

    mkdir c:datadb mkdir c:datalog

    創建配置文件

    創建一個配置文件。該文件必須設置 systemLog.path 參數,包括一些附加的配置選項更好。

    例如,創建一個配置文件位于 C:mongodbmongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具體配置內容如下:

    systemLog:destination: filepath: c:datalogmongod.log storage:dbPath: c:datadb

    4.1.4 安裝 MongoDB服務

    通過執行mongod.exe,使用--install選項來安裝服務,使用--config選項來指定之前創建的配置文件。

    C:mongodbbinmongod.exe --config "C:mongodbmongod.cfg" --install

    要使用備用 dbpath,可以在配置文件(例如:C:mongodbmongod.cfg)或命令行中通過 --dbpath 選項指定。

    如果需要,您可以安裝 mongod.exe 或 mongos.exe 的多個實例的服務。只需要通過使用 --serviceName 和 --serviceDisplayName 指定不同的實例名。只有當存在足夠的系統資源和系統的設計需要這么做。

    啟動MongoDB服務

    net start MongoDB

    關閉MongoDB服務

    net stop MongoDB

    移除 MongoDB 服務

    C:mongodbbinmongod.exe --remove 命令行下運行 MongoDB 服務器 和 配置 MongoDB 服務 任選一個方式啟動就可以。

    任選一個操作就好

    4.1.5 MongoDB 后臺管理 Shell

    如果你需要進入MongoDB后臺管理,你需要先打開mongodb裝目錄的下的bin目錄,然后執行mongo.exe文件,MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操作和管理的交互式環境。

    當你進入mongoDB后臺后,它默認會鏈接到 test 文檔(數據庫):

    > mongo MongoDB shell version: 3.0.6 connecting to: test ……

    由于它是一個JavaScript shell,您可以運行一些簡單的算術運算:

    > 2 + 2 4 >

    db 命令用于查看當前操作的文檔(數據庫):

    > db test >

    插入一些簡單的記錄并查找它:

    > db.runoob.insert({x:10}) WriteResult({ "nInserted" : 1 }) > db.runoob.find() { "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 } >

    第一個命令將數字 10 插入到 runoob 集合的 x 字段中。

    4.2 Linux平臺安裝MongoDB

    MongoDB 提供了 linux 各發行版本 64 位的安裝包,你可以在官網下載安裝包。

    下載地址:https://www.mongodb.com/download-center#community

    下載完安裝包,并解壓 tgz(以下演示的是 64 位 Linux上的安裝) 。

    curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下載 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解壓mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 將解壓包拷貝到指定目錄

    MongoDB 的可執行文件位于 bin 目錄下,所以可以將其添加到 PATH 路徑中:

    export PATH=<mongodb-install-directory>/bin:$PATH

    <mongodb-install-directory> 為你 MongoDB 的安裝路徑。如本文的 /usr/local/mongodb 。

    4.2.1 創建數據庫目錄

    MongoDB的數據存儲在data目錄的db目錄下,但是這個目錄在安裝過程不會自動創建,所以你需要手動創建data目錄,并在data目錄中創建db目錄。

    以下實例中我們將data目錄創建于根目錄下(/)。

    注意:/data/db 是 MongoDB 默認的啟動的數據庫路徑(--dbpath)。

    mkdir -p /data/db

    4.2.2 命令行中運行 MongoDB 服務

    你可以再命令行中執行mongo安裝目錄中的bin目錄執行mongod命令來啟動mongdb服務。

    注意:如果你的數據庫目錄不是/data/db,可以通過 --dbpath 來指定。$ ./mongod 2015-09-25T16:39:50.549+0800 I JOURNAL [initandlisten] journal dir=/data/db/journal 2015-09-25T16:39:50.550+0800 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed 2015-09-25T16:39:50.869+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 3.16 2015-09-25T16:39:51.206+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 3.52 2015-09-25T16:39:52.775+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 7.7

    4.2.3 MongoDB后臺管理 Shell

    如果你需要進入MongoDB后臺管理,你需要先打開mongodb裝目錄的下的bin目錄,然后執行mongo命令文件。

    MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操作和管理的交互式環境。

    當你進入mongoDB后臺后,它默認會鏈接到 test 文檔(數據庫):

    $ cd /usr/local/mongodb/bin $ ./mongo MongoDB shell version: 3.0.6 connecting to: test Welcome to the MongoDB shell. ……

    由于它是一個JavaScript shell,您可以運行一些簡單的算術運算:

    > 2+2 4 > 3+6 9

    現在讓我們插入一些簡單的數據,并對插入的數據進行檢索:

    > db.runoob.insert({x:10}) WriteResult({ "nInserted" : 1 }) > db.runoob.find() { "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 } >

    第一個命令將數字 10 插入到 runoob 集合的 x 字段中。

    4.2.4 MongoDb web 用戶界面

    MongoDB 提供了簡單的 HTTP 用戶界面。 如果你想啟用該功能,需要在啟動的時候指定參數 --rest 。

    注意:該功能只適用于 MongoDB 3.2 及之前的早期版本。$ ./mongod --dbpath=/data/db --rest

    MongoDB 的 Web 界面訪問端口比服務的端口多1000。

    如果你的MongoDB運行端口使用默認的27017,你可以在端口號為28017訪問web用戶界面,即地址為:http://localhost:28017。

    五、啟動Mongodb服務

    在你的安裝目錄/bin下,有一個叫mongod.exe的應用程序,這個程序就是用來啟動你的mongodb服務器的。

    創建數據庫目錄

    在你想要存放數據的地方,新建一個文件夾,如db,我們推薦的數據庫目錄設置是:

    data/ conf -->配置文件目錄 mongod.conf -->配置文件 db -->數據庫目錄 log -->日志文件目錄 mongodb.log -->日志記錄文件

    啟動數據庫

    我本地是window10環境,我的mongodb服務安裝在F盤的mongodb文件夾。我的數據目錄在F的data文件夾。

    啟動doc命令,輸入一下命令:

    F:>mongodb/bin F:mongodbbin>mongod --path=/data/db

    輸出以下信息:

    最后一行顯示"waiting for connections on port 27017",表明mongodb服務器已經啟動,正在27017窗口等待連接。

    再查看f:/data/db文件夾,已出現以下文件:

    說明mongodb服務啟動成功。

    將MongoDB服務器作為Windows服務運行

    像上面那樣啟動mongodb,發現沒辦法輸入命令行了,這是可以采用打開多個窗口來連接,但這樣就太麻煩了,解決辦法就是將MongoDB服務器作為Windows服務運行。

    輸入以下命令:

    F:mongodbbin>mongod --dbpath "f:datadb" --logpath "f:datalogmongodb.log" --serviceName "mongodb" --serviceDisplayName "mongodb" --install

    看到了如下輸出:

    2016-10-20T23:32:46.339+0800 I CONTROL log file "f:datalogmongodb.log" exists; moved to "f:datalogmongodb.log.2016-10-20T15-32-46".

    說明mongodb服務安裝成功。啟動mongodb服務:

    F:mongodbbin>net start mongodb MongoDB 服務已經啟動成功。

    說明mongodb啟動成功。

    由于我們并沒有指定mongodb服務的端口號,所以它啟動在默認的27017窗口。

    打開瀏覽器,范圍地址http://127.0.0.1:27017/,可看到如下信息

    It looks like you are trying to access MongoDB over HTTP on the native driver port.

    mongodb常用啟動參數

    mongod.exe常用參數如下:

    mongod.exe的啟動參數,在window環境下和linux環境下并不相同,詳見mongod - mongodb啟動服務工具。

    六、MongoDB - 連接

    6.1 啟動 MongoDB服務

    在前面的教程中,我們已經討論了如何啟動MongoDB服務,你只需要在MongoDB安裝目錄的bin目錄下執行'mongod'即可。

    執行啟動操作后,mongodb在輸出一些必要信息后不會輸出任何信息,之后就等待連接的建立,當連接被建立后,就會開始打印日志信息。

    你可以使用 MongoDB shell 來連接 MongoDB 服務器。你也可以使用 PHP 來連接 MongoDB。本教程我們會使用 MongoDB shell 來連接 Mongodb 服務,之后的章節我們將會介紹如何通過php 來連接MongoDB服務。

    6.2 通過shell連接MongoDB服務

    你可以通過執行以下命令來連接MongoDB的服務。

    注意:localhost為主機名,這個選項是必須的:

    mongodb://localhost

    當你執行以上命令時,你可以看到以下輸出結果:

    $ ./mongo MongoDB shell version: 3.0.6 connecting to: test > mongodb://localhostmongodb://localhost ...

    這時候你返回查看運行 ./mongod 命令的窗口,可以看到是從哪里連接到MongoDB的服務器,您可以看到如下信息:

    ……省略信息…… 2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] allocator: tcmalloc 2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "/data/db" } } 2015-09-25T17:22:27.350+0800 I NETWORK [initandlisten] waiting for connections on port 27017 2015-09-25T17:22:36.012+0800 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open) # 該行表明一個來自本機的連接 ……省略信息……

    6.3 MongoDB連接命令格式

    使用用戶名和密碼連接到MongoDB服務器,你必須使用 'username:password@hostname/dbname' 格式,'username'為用戶名,'password' 為密碼。

    使用用戶名和密碼連接登陸到默認數據庫:

    $ ./mongo MongoDB shell version: 3.0.6 connecting to: test mongodb://admin:123456@localhost/

    以上命令中,用戶 admin 使用密碼 123456 連接到本地的 MongoDB 服務上。輸出結果如下所示:<、p>

    > mongodb://admin:123456@localhost/ ...

    使用用戶名和密碼連接登陸到指定數據庫:

    連接到指定數據庫的格式如下:

    mongodb://admin:123456@localhost/test

    6.4 更多連接實例

    連接本地數據庫服務器,端口是默認的。

    mongodb://localhost

    使用用戶名fred,密碼foobar登錄localhost的admin數據庫。

    mongodb://fred:foobar@localhost

    使用用戶名fred,密碼foobar登錄localhost的baz數據庫。

    mongodb://fred:foobar@localhost/baz

    連接 replica pair, 服務器1為http://example1.com服務器2為example2。

    mongodb://example1.com:27017,http://example2.com:27017

    連接 replica set 三臺服務器 (端口 27017, 27018, 和27019):

    mongodb://localhost,localhost:27018,localhost:27019

    連接 replica set 三臺服務器, 寫入操作應用在主服務器 并且分布查詢到從服務器。

    mongodb://host1,host2,host3/?slaveOk=true

    直接連接第一個服務器,無論是replica set一部分或者主服務器或者從服務器。

    mongodb://host1,host2,host3/?connect=direct;slaveOk=true

    當你的連接服務器有優先級,還需要列出所有服務器,你可以使用上述連接方式。

    安全模式連接到localhost:

    mongodb://localhost/?safe=true

    以安全模式連接到replica set,并且等待至少兩個復制服務器成功寫入,超時時間設置為2秒。

    mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

    6.5 參數選項說明

    標準格式:

    mongodb://[username:password@]host1:port1,...,hostN[:portN]][?options]]

    標準的連接格式包含了多個選項(options),如下所示:

    七、Mongodb的使用

    7.1 MongoDB 創建數據庫

    MongoDB 創建數據庫的語法格式如下:

    use DATABASE_NAME

    如果數據庫不存在,則創建數據庫,否則切換到指定數據庫。

    以下實例我們創建了數據庫 mongo:

    > use mongo switched to db mongo > db mongo >

    如果你想查看所有數據庫,可以使用 show dbs 命令:

    > show dbs local 0.078GB test 0.078GB >

    可以看到,我們剛創建的數據庫 mongo 并不在數據庫的列表中, 要顯示它,我們需要向 mongo 數據庫插入一些數據。

    > db.mongo.insert({"name":"mongodb中文網"}) WriteResult({ "nInserted" : 1 }) > show dbs local 0.078GB mongo 0.078GB test 0.078GB >

    MongoDB 中默認的數據庫為 test,如果你沒有創建新的數據庫,集合將存放在 test 數據庫中。

    7.2 MongoDB 刪除數據庫

    MongoDB 刪除數據庫的語法格式如下:

    db.dropDatabase()

    刪除當前數據庫,默認為 test,你可以使用 db 命令查看當前數據庫名。

    以下實例我們刪除了數據庫 mongo。

    首先,查看所有數據庫:

    > show dbs local 0.078GB mongo 0.078GB test 0.078GB

    接下來我們切換到數據庫 mongo

    > use runoob switched to db mongo >

    執行刪除命令:

    > db.dropDatabase() { "dropped" : "runoob", "ok" : 1 }

    最后,我們再通過 show dbs 命令數據庫是否刪除成功:

    > show dbs local 0.078GB test 0.078GB >

    集合刪除語法格式如下:

    db.collection.drop()

    7.3 MongoDB 插入文檔

    插入文檔

    MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,語法如下:

    db.COLLECTION_NAME.insert(document)

    實例

    以下文檔可以存儲在 MongoDB 的 mongo 數據庫 的 col集合中:

    >db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一個 Nosql 數據庫', by: 'MongoDB中文網', url: 'http://www.mongodb.org.cn', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })

    以上實例中 col 是我們的集合名,前一章節我們已經創建過了,如果該集合不在該數據庫中, MongoDB 會自動創建該集合并插入文檔。

    查看已插入文檔:

    > db.col.find() { "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "MongoDB中文網", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >

    我們也可以將數據定義為一個變量,如下所示:

    > document=({title: 'MongoDB 教程',description: 'MongoDB 是一個 Nosql 數據庫', by: 'Mongodb中文網', url: 'http://www.mongodb.org.cn', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 });

    執行后顯示結果如下:

    { "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "Mongodb中文網", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }

    執行插入操作:

    > db.col.insert(document) WriteResult({ "nInserted" : 1 }) >

    插入文檔你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法類似于 insert() 方法。如果指定 _id 字段,則會更新該 _id 的數據。

    7.4 MongoDB 刪除文檔

    語法

    remove() 方法的基本語法格式如下所示:

    db.collection.remove( <query>, <justOne> )

    如果你的 MongoDB 是 2.6 版本以后的,語法格式如下:

    db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )

    參數說明:

    • query :(可選)刪除的文檔的條件。
    • justOne : (可選)如果設為 true 或 1,則只刪除一個文檔。
    • writeConcern :(可選)拋出異常的級別。

    實例

    以下文檔我們執行兩次插入操作:

    >db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一個 Nosql 數據庫', by: 'MongoDB中文網', url: 'http://www.mongodb.org.cn', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })

    使用 find() 函數查詢數據:

    > db.col.find() { "_id" : ObjectId("56066169ade2f21f36b03137"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "MongoDB中文網", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } { "_id" : ObjectId("5606616dade2f21f36b03138"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "MongoDB中文網", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }

    接下來我們移除 title 為 'MongoDB 教程' 的文檔:

    >db.col.remove({'title':'MongoDB 教程'}) WriteResult({ "nRemoved" : 2 }) # 刪除了兩條數據 >db.col.find() …… # 沒有數據

    如果你只想刪除第一條找到的記錄可以設置 justOne 為 1,如下所示:

    >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

    如果你想刪除所有數據,可以使用以下方式(類似常規 SQL 的 truncate 命令):

    >db.col.remove({}) >db.col.find() >

    7.5 MongoDB 更新文檔

    update() 方法

    update() 方法用于更新已存在的文檔。語法格式如下:

    db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )

    參數說明:

    • query : update的查詢條件,類似sql update查詢內where后面的。
    • update : update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的
    • upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
    • multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
    • writeConcern :可選,拋出異常的級別。

    實例

    我們在集合 col 中插入如下數據:

    >db.col.insert({ title: 'Mongodb 教程', description: 'MongoDB 是一個 Nosql 數據庫', by: 'Mongodb中文網', url: 'http://www.mongodb.org.cn', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })

    接著我們通過 update() 方法來更新標題(title):

    >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 輸出信息 > db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "Mongodb中文網", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >

    可以看到標題(title)由原來的 "MongoDB 教程" 更新為了 "MongoDB"。

    以上語句只會修改第一條發現的文檔,如果你要修改多條相同的文檔,則需要設置 multi 參數為 true。

    >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

    save() 方法

    save() 方法通過傳入的文檔來替換已有文檔。語法格式如下:

    db.collection.save( <document>, { writeConcern: <document> } )

    參數說明:

    • document : 文檔數據。
    • writeConcern :可選,拋出異常的級別。

    實例

    以下實例中我們替換了 _id 為 56064f89ade2f21f36b03136 的文檔數據:

    >db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "MongoDB中文網", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 } )

    替換成功后,我們可以通過 find() 命令來查看替換后的數據

    >db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "Mongo", "url" : "http://www.mongodb.org.cn", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 } >

    更多實例

    只更新第一條記錄:

    db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

    全部更新:

    db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

    只添加第一條:

    db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

    全部添加加進去:

    db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

    全部更新:

    db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

    只更新第一條記錄:

    db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

    更多mongodb操作查看 https://www.mongodb.org.cn/manual/>

    7.6 MongoDB 查詢文檔

    MongoDB 查詢文檔使用 find() 方法。

    find() 方法以非結構化的方式來顯示所有文檔。

    語法

    MongoDB 查詢數據的語法格式如下:

    db.collection.find(query, projection)
    • query :可選,使用查詢操作符指定查詢條件
    • projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。

    如果你需要以易讀的方式來讀取數據,可以使用 pretty() 方法,語法格式如下:

    >db.col.find().pretty()

    pretty() 方法以格式化的方式來顯示所有文檔。

    實例

    以下實例我們查詢了集合 col 中的數據:

    > db.col.find().pretty() {"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一個 Nosql 數據庫","by" : "菜鳥教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100 }

    除了 find() 方法之外,還有一個 findOne() 方法,它只返回一個文檔。

    7.6.1 MongoDB 與 RDBMS Where 語句比較

    如果你熟悉常規的 SQL 數據,通過下表可以更好的理解 MongoDB 的條件語句查詢:

    7.6.2 MongoDB AND 條件

    MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,即常規 SQL 的 AND 條件。

    語法格式如下:

    >db.col.find({key1:value1, key2:value2}).pretty()

    實例

    以下實例通過 by 和 title 鍵來查詢 菜鳥教程 中 MongoDB 教程 的數據

    > db.col.find({"by":"菜鳥教程", "title":"MongoDB 教程"}).pretty() {"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一個 Nosql 數據庫","by" : "菜鳥教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100 }

    以上實例中類似于 WHERE 語句:WHERE by='菜鳥教程' AND title='MongoDB 教程'

    7.6.3 MongoDB OR 條件

    MongoDB OR 條件語句使用了關鍵字 $or,語法格式如下:

    >db.col.find({$or: [{key1: value1}, {key2:value2}]} ).pretty()

    實例

    以下實例中,我們演示了查詢鍵 by 值為 菜鳥教程 或鍵 title 值為 MongoDB 教程 的文檔。

    >db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty() {"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一個 Nosql 數據庫","by" : "菜鳥教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100 } >

    AND 和 OR 聯合使用

    以下實例演示了 AND 和 OR 聯合使用,類似常規 SQL 語句為: 'where likes>50 AND (by = '菜鳥教程' OR title = 'MongoDB 教程')'

    >db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty() {"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一個 Nosql 數據庫","by" : "菜鳥教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100 }

    7.7 MongoDB 條件操作符

    描述

    條件操作符用于比較兩個表達式并從mongoDB集合中獲取數據。

    在本章節中,我們將討論如何在MongoDB中使用條件操作符。

    MongoDB中條件操作符有:

    • (>) 大于 - $gt
    • (<) 小于 - $lt
    • (>=) 大于等于 - $gte
    • (<= ) 小于等于 - $lte

    我們使用的數據庫名稱為"runoob" 我們的集合名稱為"col",以下為我們插入的數據。

    為了方便測試,我們可以先使用以下命令清空集合 "col" 的數據:

    db.col.remove({})

    插入以下數據

    >db.col.insert({title: 'PHP 教程', description: 'PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['php'],likes: 200 }) >db.col.insert({title: 'Java 教程', description: 'Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['java'],likes: 150 }) >db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一個 Nosql 數據庫',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['mongodb'],likes: 100 })

    使用find()命令查看數據:

    > db.col.find() { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    7.7.1 MongoDB (>) 大于操作符 - $gt

    如果你想獲取 "col" 集合中 "likes" 大于 100 的數據,你可以使用以下命令:

    db.col.find({likes : {$gt : 100}})

    類似于SQL語句:

    Select * from col where likes > 100;

    輸出結果:

    > db.col.find({likes : {$gt : 100}}) { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } >

    7.7.2 MongoDB(>=)大于等于操作符 - $gte

    如果你想獲取"col"集合中 "likes" 大于等于 100 的數據,你可以使用以下命令:

    db.col.find({likes : {$gte : 100}})

    類似于SQL語句:

    Select * from col where likes >=100;

    輸出結果:

    > db.col.find({likes : {$gte : 100}}) { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 } >

    7.7.3 MongoDB (<) 小于操作符 - $lt

    如果你想獲取"col"集合中 "likes" 小于 150 的數據,你可以使用以下命令:

    db.col.find({likes : {$lt : 150}})

    類似于SQL語句:

    Select * from col where likes < 150;

    輸出結果:

    > db.col.find({likes : {$lt : 150}}) { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    7.7.4 MongoDB (<=) 小于等于操作符 - $lte

    如果你想獲取"col"集合中 "likes" 小于等于 150 的數據,你可以使用以下命令:

    db.col.find({likes : {$lte : 150}})

    類似于SQL語句:

    Select * from col where likes <= 150;

    輸出結果:

    > db.col.find({likes : {$lte : 150}}) { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    7.7.5 MongoDB 使用 (<) 和 (>) 查詢 - $lt 和 $gt

    如果你想獲取"col"集合中 "likes" 大于100,小于 200 的數據,你可以使用以下命令:

    db.col.find({likes : {$lt :200, $gt : 100}})

    類似于SQL語句:

    Select * from col where likes>100 AND likes<200;

    輸出結果:

    > db.col.find({likes : {$lt :200, $gt : 100}}) { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } >

    7.8 MongoDB $type 操作符

    描述

    在本章節中,我們將繼續討論MongoDB中條件操作符 $type。

    $type操作符是基于BSON類型來檢索集合中匹配的數據類型,并返回結果。

    MongoDB 中可以使用的類型如下表所示:

    我們使用的數據庫名稱為"runoob" 我們的集合名稱為"col",以下為我們插入的數據。

    簡單的集合"col":

    >db.col.insert({title: 'PHP 教程', description: 'PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['php'],likes: 200 }) >db.col.insert({title: 'Java 教程', description: 'Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['java'],likes: 150 }) >db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一個 Nosql 數據庫',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['mongodb'],likes: 100 })

    使用find()命令查看數據:

    > db.col.find() { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    MongoDB 操作符 - $type 實例

    如果想獲取 "col" 集合中 title 為 String 的數據,你可以使用以下命令:

    db.col.find({"title" : {$type : 2}}) 或 db.col.find({"title" : {$type : 'string'}})

    輸出結果為:

    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    7.9 MongoDB Limit與Skip方法

    7.9.1 MongoDB Limit() 方法

    如果你需要在MongoDB中讀取指定數量的數據記錄,可以使用MongoDB的Limit方法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。

    語法

    limit()方法基本語法如下所示:

    >db.COLLECTION_NAME.find().limit(NUMBER)

    實例

    集合 col 中的數據如下:

    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    以下實例為顯示查詢文檔中的兩條記錄:

    > db.col.find({},{"title":1,_id:0}).limit(2) { "title" : "PHP 教程" } { "title" : "Java 教程" } >

    注:如果你們沒有指定limit()方法中的參數則顯示集合中的所有數據。

    7.9.2 MongoDB Skip() 方法

    我們除了可以使用limit()方法來讀取指定數量的數據外,還可以使用skip()方法來跳過指定數量的數據,skip方法同樣接受一個數字參數作為跳過的記錄條數。

    語法

    skip() 方法腳本語法格式如下:

    >db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

    實例

    以下實例只會顯示第二條文檔數據

    >db.col.find({},{"title":1,_id:0}).limit(1).skip(1) { "title" : "Java 教程" } >

    注:skip()方法默認參數為 0 。

    8.0 MongoDB 排序

    MongoDB sort() 方法

    在 MongoDB 中使用 sort() 方法對數據進行排序,sort() 方法可以通過參數指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列。

    語法

    sort()方法基本語法如下所示:

    >db.COLLECTION_NAME.find().sort({KEY:1})

    實例

    col 集合中的數據如下:

    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高級程序設計語言。", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    以下實例演示了 col 集合中的數據按字段 likes 的降序排列:

    >db.col.find({},{"title":1,_id:0}).sort({"likes":-1}) { "title" : "PHP 教程" } { "title" : "Java 教程" } { "title" : "MongoDB 教程" } >

    八、 MongoDB 之spring-mvc整合

    參考https://blog.csdn.net/hh12211221/article/details/77717364文章

    九、 MongoDB 之springboot整合

    9.1 導入依賴

    <dependencies><!--spring-boot起步依賴--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><!--實體--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version></dependency> </dependencies>

    9.2 配置文件

    spring.application.name=mongodb_demo server.port=8080 ? ? spring.data.mongodb.uri=mongodb://localhost:27017/test

    9.3 DAO層

    package com.hellojava.dao; ? ? ? import com.hellojava.model.MongoTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Component; ? @Component public class MongoTestDao { ? ?@Autowiredprivate MongoTemplate mongoTemplate; ?/*** 創建對象*/public void saveTest(MongoTest test) {mongoTemplate.save(test);} ?/*** 根據用戶名查詢對象* @return*/public MongoTest findTestByName(String name) {Query query=new Query(Criteria.where("name").is(name));MongoTest mgt = mongoTemplate.findOne(query , MongoTest.class);return mgt;} ?/*** 更新對象*/public void updateTest(MongoTest test) {Query query=new Query(Criteria.where("id").is(test.getId()));Update update= new Update().set("age", test.getAge()).set("name", test.getName());//更新查詢返回結果集的第一條mongoTemplate.updateFirst(query,update,MongoTest.class);//更新查詢返回結果集的所有// mongoTemplate.updateMulti(query,update,TestEntity.class);} ?/*** 刪除對象* @param id*/public void deleteTestById(Integer id) {Query query=new Query(Criteria.where("id").is(id));mongoTemplate.remove(query,MongoTest.class);} }

    總結

    以上是生活随笔為你收集整理的mongodb连接失败_MongoDB 基础入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    欧美婷婷色 | 婷婷丁香在线观看 | 精品国产美女在线 | 一区二区三区免费在线播放 | 色婷婷骚婷婷 | 久久99精品热在线观看 | 福利网在线 | 在线播放视频一区 | 久久精品九色 | 97干com| 国产一卡在线 | 久草在线视频中文 | 91视频免费视频 | 操操操com | 精品国产1区2区3区 国产欧美精品在线观看 | 久久99国产精品久久 | 天堂入口网站 | 亚洲区另类春色综合小说校园片 | 亚洲无吗视频在线 | 久久69av| 国产精品成人一区二区 | 西西444www大胆无视频 | 久久超 | 国产一区视频在线 | 激情综合色图 | 日韩r级电影在线观看 | 欧美一级视频在线观看 | 草久久久久久 | 日本丰满少妇免费一区 | 欧美粗又大 | 91香蕉视频 | 狠狠88综合久久久久综合网 | 久久精品中文字幕一区二区三区 | 亚洲最大的av网站 | 91麻豆精品国产91久久久无限制版 | 久草资源在线 | 在线精品播放 | 国产91精品欧美 | 国产精品网红直播 | 17videosex性欧美| 国产黄色大片 | 婷婷色中文网 | 黄色成年网站 | 欧美少妇xx | 婷婷视频在线观看 | 久久情网 | 成人黄色电影免费观看 | 亚洲三级毛片 | 中文字幕一区二区三区四区久久 | a色视频| 亚洲精品乱码久久久久久蜜桃不爽 | 97视频在线免费 | www.婷婷色| 黄色www | 视频在线播放国产 | 一本色道久久综合亚洲二区三区 | 91片在线观看 | 成人免费看片98欧美 | 狠狠色狠狠色终合网 | 99久久精品国产欧美主题曲 | 欧美精品在线一区 | 激情在线网 | 丁香六月网 | 黄色小说视频在线 | 精品黄色在线观看 | 国产小视频免费在线网址 | 中文字幕精品在线 | 免费在线电影网址大全 | 九九色视频 | 日韩大陆欧美高清视频区 | 中文字幕人成不卡一区 | 亚洲成人av片 | 日日夜夜天天人人 | 手机在线视频福利 | 丁香六月久久综合狠狠色 | 久草在线看片 | 日免费视频 | 国产精品18久久久久久久 | 国产美女网站在线观看 | 免费大片黄在线 | 永久av免费在线观看 | 国产精品久久婷婷六月丁香 | 天天天干天天天操 | 免费三级影片 | 亚洲国产中文在线 | 99免在线观看免费视频高清 | 久久美女高清视频 | 91一区二区三区在线观看 | 欧美日韩在线观看一区二区三区 | 500部大龄熟乱视频使用方法 | 久草免费资源 | 久久久久久久国产精品视频 | 亚洲精品一区二区18漫画 | 97国产精品| a级国产片| 在线欧美小视频 | 国产精品视频免费观看 | 69国产精品视频免费观看 | 中文字幕国语官网在线视频 | 日韩偷拍精品 | 色老板在线 | 亚洲精品午夜久久久久久久久久久 | 激情综合久久 | 日韩色区 | 亚洲精品一区二区三区在线观看 | 久久综合久久久久88 | 国产在线观看中文字幕 | 激情av综合| 中文字幕一区二区三区四区 | 久久99国产一区二区三区 | 国产精品一区二区久久精品 | 国产喷水在线 | 亚洲人成免费 | 亚洲激情一区二区三区 | 日本韩国欧美在线观看 | 欧美一级久久 | 欧美性黑人 | 欧美在线观看视频免费 | 日日爽| 亚洲精品中文字幕在线观看 | 国产手机免费视频 | 国产电影黄色av | 久久久电影网站 | 人人盈棋牌 | 蜜臀久久99精品久久久酒店新书 | 国产九九九精品视频 | 福利一区二区三区四区 | 色就色,综合激情 | 中文字幕精 | 日韩精品免费在线播放 | 91最新国产 | 成人免费视频网站在线观看 | av片子在线观看 | 久久久久久久久久久网 | 成人黄在线| 国产黄色免费电影 | 国产亚洲欧美在线视频 | 狠狠干狠狠操 | 91aaa在线观看| 国产99精品 | 手机在线日韩视频 | 亚洲视频综合 | 九九热在线观看视频 | 草久久久久 | 97激情影院 | 在线观看黄网站 | 亚洲欧美日韩一二三区 | 操碰av| 亚洲精品午夜aaa久久久 | 丁香花中文在线免费观看 | 国产精品久久一区二区三区不卡 | 国产精品1区2区3区在线观看 | 激情视频91| 亚洲高清在线观看视频 | 一区二区中文字幕在线观看 | 亚洲精品国产高清 | 在线观看网站你懂的 | 国产亚洲欧美日韩高清 | 久久97视频| 91福利社在线观看 | 激情开心 | 香蕉在线视频播放网站 | 亚洲国产影院 | 色五月成人 | 免费观看9x视频网站在线观看 | 在线免费看黄色 | 国产成人精品一区二区三区福利 | 九九综合在线 | 久久久午夜精品福利内容 | 中文字幕国产 | 日韩在线免费不卡 | 波多野结衣视频在线 | 国产成人精品一区二区 | 成人a毛片 | 色婷婷成人 | 一本到视频在线观看 | 亚洲第二色 | 天天激情综合 | 成人一级片免费看 | 久草精品视频 | 国产亚洲精品久久久久久 | 天天躁日日躁狠狠躁av中文 | 国产区精品在线 | 丰满少妇在线观看资源站 | 日韩欧美高清一区二区三区 | 午夜在线免费观看视频 | a黄色片在线观看 | 操久久免费视频 | 成人av动漫在线 | 欧美久久久久久久久中文字幕 | 国产乱码精品一区二区三区介绍 | 亚洲高清视频在线观看 | 成人av影院在线观看 | 婷婷亚洲综合五月天小说 | 久久国产精品久久国产精品 | 狠狠狠色 | 手机成人免费视频 | 麻豆影视网 | 成人免费看电影 | 国产一区二区三区黄 | 精油按摩av| 久久伊人八月婷婷综合激情 | 天天综合入口 | 亚洲一区二区高潮无套美女 | 欧美精品乱码久久久久 | 91精品少妇偷拍99 | 日批视频国产 | 日韩在线视频免费播放 | 国产一区电影在线观看 | 久久亚洲日本 | 国产精品日韩高清 | 国产精品区二区三区日本 | 久久综合之合合综合久久 | 国语精品免费视频 | 免费观看黄色12片一级视频 | av在线永久免费观看 | 天天干夜夜干 | 97成人超碰 | 色网站免费在线观看 | 91中文字幕在线播放 | 亚洲黄色a| 国产一区精品在线 | 91在线91| 日本最新中文字幕 | 欧美巨大荫蒂茸毛毛人妖 | 看毛片网站 | 久久激情综合 | 日韩激情视频在线 | 粉嫩av一区二区三区入口 | 最近高清中文字幕在线国语5 | 99久久99久久精品 | 97超碰在线久草超碰在线观看 | 色婷婷在线观看视频 | 91精彩视频 | 成人小视频在线免费观看 | 国产美女被啪进深处喷白浆视频 | 成人国产精品一区 | 丰满少妇在线 | 欧洲黄色片 | 在线免费看黄网站 | 去干成人网| 99色视频在线| 天天爱天天干天天爽 | 亚洲va欧美va | 国产成人性色生活片 | 美女福利视频网 | 亚洲欧美日韩一区二区三区在线观看 | av看片在线 | 国产中文字幕视频在线观看 | 国产在线观看91 | 久久久久久麻豆 | 天天射天天操天天色 | 国产一区二区在线播放视频 | 免费久久99精品国产 | 伊人射| 午夜美女福利直播 | 最近中文字幕视频完整版 | 怡红院久久 | 亚洲一二区视频 | 婷婷国产一区二区三区 | 玖玖在线视频观看 | 亚洲理论电影网 | 最近2019好看的中文字幕免费 | 亚洲在线色| 天堂在线成人 | 黄色午夜 | 最新国产中文字幕 | 96视频免费在线观看 | 欧美一区二视频在线免费观看 | 香蕉影院在线观看 | 天天插日日射 | 久久久久久久久久久免费视频 | 中文字幕在线成人 | 91午夜精品| 亚洲精品2区 | 亚洲精品国产拍在线 | 欧美ⅹxxxxxx | 911精品视频| avav99| 国产一级片在线播放 | 久久伊人精品一区二区三区 | 日韩一区二区免费在线观看 | 午夜精品剧场 | 日韩欧美综合精品 | 超碰人人超 | 国产精品免费观看网站 | 精品人妖videos欧美人妖 | 在线蜜桃视频 | 91黄色视屏 | 九九九九色 | 欧美色图p | 五月婷婷色播 | 日韩av电影手机在线观看 | 亚洲人久久久 | 欧美一区二区三区四区夜夜大片 | 欧美精品免费视频 | 九月婷婷综合网 | 97高清免费视频 | 成人av片免费观看app下载 | 天天摸天天操天天舔 | 超碰97国产精品人人cao | 狠狠操天天射 | 激情视频免费观看 | 夜色成人av | 91污在线观看 | 日av免费| 中文字幕在线影视资源 | 四川bbb搡bbb爽爽视频 | 日韩精品免费一区 | 中文字幕在线观看免费 | 超碰在线98 | 欧美一区中文字幕 | 亚洲成色777777在线观看影院 | 在线视频日韩 | 久久久久久久综合色一本 | 人人盈棋牌 | 国产一区在线视频 | 六月久久婷婷 | 97碰碰精品嫩模在线播放 | 欧美一区二区三区免费观看 | 久久综合福利 | 少妇搡bbbb搡bbb搡忠贞 | 成人一级片视频 | 麻豆视频免费播放 | 91亚洲精品久久久中文字幕 | 99高清视频有精品视频 | 亚洲激情av | 在线а√天堂中文官网 | 99视频播放 | 中文字幕一区二区三区乱码不卡 | 免费在线观看一级片 | 激情欧美在线观看 | 91精品视频一区 | 国产精品视频久久 | 黄网站免费大全入口 | 99视频精品免费视频 | 久久久久久久久久福利 | 国产不卡高清 | 99九九视频 | 狠狠色伊人亚洲综合成人 | 欧美日韩在线视频一区二区 | 日韩理论片在线 | 日韩 国产 | 欧美另类美少妇69xxxx | 在线婷婷 | 欧美性色19p| 91女人18片女毛片60分钟 | 视频福利在线 | 在线成人观看 | 欧美一级乱黄 | 午夜久久影视 | 96av视频| 亚洲国产精品女人久久久 | 六月色婷婷| 三级av在线免费观看 | 国产一线二线三线性视频 | 日韩中文字幕第一页 | 黄色片免费在线 | 伊人手机在线 | 91精品国产成人观看 | 欧美激精品 | 久久观看| 手机av在线不卡 | 日本福利视频在线 | 一区二区三区电影 | 国产中文字幕一区 | 久久亚洲私人国产精品 | 天堂av最新网址 | 人人干人人艹 | 久久看免费视频 | 欧美 日韩 国产 成人 在线 | 欧美日韩性视频在线 | 久久国产精品99久久久久久丝袜 | 国产精品videossex国产高清 | 欧洲一区二区三区精品 | 色综合久久综合中文综合网 | 九九久久电影 | 激情小说网站亚洲综合网 | 婷婷丁香色 | 国产精品日韩久久久久 | 一区二区观看 | 日韩欧美国产激情在线播放 | 久久综合五月天 | 国产精品一区二区三区在线看 | 久久成人高清视频 | 国产视| www.色综合.com | 97碰碰精品嫩模在线播放 | 91在线视频免费观看 | 福利视频一二区 | 成人91在线观看 | 国产中文视 | 男女激情片在线观看 | 久久av伊人 | 在线黄色av电影 | 久久人人爽人人爽人人片 | 狠狠干狠狠操 | 国产精品久久久久久久99 | 日日爽天天操 | 国产精品欧美久久久久无广告 | 91毛片在线 | 中文字幕一二三区 | 亚洲成人一区 | 福利视频一区二区 | 干 操 插| 首页国产精品 | 久久在视频 | 国产视频亚洲视频 | 亚洲视频456 | 91视频在线播放视频 | 欧美另类69 | 日韩精品大片 | 欧美久久久久久久久久久久久 | 毛片无卡免费无播放器 | 国产精品嫩草69影院 | 久久久久国产精品免费网站 | 手机av在线网站 | 欧美精品v国产精品 | 天堂av在线网 | 免费激情网 | 久久精品99北条麻妃 | 日韩视频免费 | 国产a国产| 亚洲精品久久激情国产片 | 草久在线观看 | 激情大尺度视频 | 国产 中文 日韩 欧美 | 韩日电影在线观看 | 久久黄色成人 | 狠狠艹夜夜干 | 日本精品久久 | 999电影免费在线观看 | 国产中文字幕在线视频 | 国产精品免费观看在线 | 国产精品99久久久精品 | 亚洲免费永久精品国产 | 久久免费99精品久久久久久 | 亚洲乱码久久久 | 91亚瑟视频 | 美女网站视频一区 | 一级片视频在线 | www视频在线观看 | 国产成人亚洲在线电影 | 日日干日日 | 国产高清久久久久 | 奇米影视8888 | 久久久久久片 | 日韩二区三区 | www在线观看视频 | 国产成视频在线观看 | 在线亚洲人成电影网站色www | 在线91色 | 日韩午夜网站 | 91完整版观看 | 国产黄色片久久 | 免费在线a| 五月婷婷久久综合 | av电影免费在线看 | 麻豆超碰| www.夜色321.com| 欧美日韩视频精品 | 精品亚洲一区二区三区 | 网站免费黄 | 婷婷久久一区二区三区 | 99精品黄色片免费大全 | 天天干天天天 | 97av视频| 亚洲精品网站在线 | 日韩精品视频在线观看免费 | 精品久久1 | 欧美国产不卡 | 91亚洲在线观看 | 久草网在线观看 | 久久在视频 | 精品一区二区综合 | 日韩av在线影视 | 国产在线观看a | 国产成人亚洲在线观看 | 天天搞天天干天天色 | 一本之道乱码区 | 久久黄色网页 | 丁香激情婷婷 | 国产精品视频久久久 | 国产精品一区二区三区视频免费 | 久久99精品久久久久婷婷 | 91人人澡人人爽 | 色吧av色av | 久久毛片网 | 日韩r级电影在线观看 | 91麻豆网站 | 国产日产精品久久久久快鸭 | 在线www色 | 亚洲女人av | 国产亚洲在线 | 在线日韩 | 亚洲精品乱码久久久久久9色 | 亚洲 欧美日韩 国产 中文 | 一性一交视频 | 久久精品香蕉视频 | www久久九| 国产91aaa | a v在线视频 | 国产免费不卡av | 三级黄色欧美 | 欧美精品在线观看一区 | 国产美女主播精品一区二区三区 | 天天操天天舔天天干 | 国产亚洲情侣一区二区无 | 亚洲黄色软件 | 国产成人福利在线 | 91麻豆产精品久久久久久 | 日韩欧美视频一区 | 天天爽夜夜爽精品视频婷婷 | 91超碰在线播放 | 国产最新91 | 激情影音先锋 | 天天天天干 | 日韩一二区在线观看 | 婷婷色社区 | 天天天天天天操 | av黄色在线| 91插插插网站 | 国产91粉嫩白浆在线观看 | 成人av一级片 | 中文字幕日韩一区二区三区不卡 | 超碰97国产精品人人cao | 日日夜夜天天干 | 日韩高清dvd | 黄色在线看网站 | 免费黄色激情视频 | 精品主播网红福利资源观看 | 亚洲视频专区在线 | 一二三久久久 | 91亚洲精品久久久蜜桃网站 | 精品成人网 | 一区三区在线欧 | 日韩欧美成 | 久久视频99 | 97精品国产97久久久久久免费 | 国产小视频在线免费观看视频 | 久操视频在线播放 | 一区二区三区高清 | 爱爱av在线| 伊人开心激情 | 精品视频www | 久久人人精 | 国产视频999 | 性色xxxxhd | 亚洲国产理论片 | 最近2019中文免费高清视频观看www99 | 久久精品九色 | 99热在线观看免费 | 久久久午夜精品理论片中文字幕 | 九九日九九操 | 96久久久| 在线观看色网 | 国产不卡视频在线 | 婷婷在线网站 | 日韩午夜视频在线观看 | 日夜夜精品视频 | 婷婷在线色 | 国产区久久 | 精品欧美一区二区在线观看 | 中文字幕观看在线 | 欧美二区视频 | 国产精品久久久99 | 午夜婷婷在线观看 | 91av欧美| 97成人在线视频 | 日日夜夜免费精品视频 | 在线观看自拍 | 一二三四精品 | 在线91精品 | 天天色天天射天天综合网 | 久久精品人人做人人综合老师 | 亚洲无在线 | av在线网站观看 | 色综合五月 | 99久久99久久精品免费 | 天天干亚洲 | 欧美日韩一区久久 | 黄色网www | 天天干天天干天天干 | 亚洲精品视频在线播放 | 久久久精品一区二区 | av亚洲产国偷v产偷v自拍小说 | 欧美日韩中文字幕综合视频 | 国产午夜三级 | av超碰免费在线 | 99精品电影 | 国产美女无遮挡永久免费 | 国产一区在线观看免费 | 视频精品一区二区三区 | 日日麻批40分钟视频免费观看 | 午夜av免费观看 | 国产精品久久久久久电影 | 521色香蕉网站在线观看 | 色噜噜日韩精品一区二区三区视频 | 国产无遮挡猛进猛出免费软件 | 成人精品一区二区三区中文字幕 | 99精品免费 | 中文字幕精 | 久久黄色小说视频 | 国产精品美女久久久久久久 | 夜夜躁天天躁很躁波 | 亚洲精品小区久久久久久 | 黄色三级视频片 | 免费看国产曰批40分钟 | 中文字幕欧美日韩va免费视频 | 欧美日韩中文字幕在线视频 | 91九色九色| 国产一级视频在线免费观看 | 国产精品女同一区二区三区久久夜 | 欧美一级大片在线观看 | 99热在线国产精品 | 国产一区国产二区在线观看 | 国产精品激情 | 黄色片免费在线 | 中文字幕免费国产精品 | 男女全黄一级一级高潮免费看 | 免费看国产曰批40分钟 | 日本精品中文字幕在线观看 | 国产高清精 | 99综合电影在线视频 | 亚洲理论电影网 | 国产91精品一区二区麻豆网站 | 91免费视频网站在线观看 | 国产视频在线播放 | 国产一区二区高清不卡 | 99在线高清视频在线播放 | 91激情视频在线 | 久久a国产| 97成人免费 | 国产精品观看在线亚洲人成网 | 麻豆视屏| 国内外成人在线视频 | 国产中文字幕在线视频 | av免费在线看网站 | 日韩在线视频一区二区三区 | 久久免费在线视频 | 六月丁香社区 | 麻豆视屏 | 日韩精品视频免费在线观看 | 亚洲 欧美变态 另类 综合 | 黄色av在| 黄色aaaaa | 伊甸园av在线 | 欧美日韩国产综合一区二区 | 黄污视频大全 | 福利视频区 | 久久综合狠狠 | 欧美成年性 | 国语自产偷拍精品视频偷 | 国产一级黄色免费看 | 久久情侣偷拍 | 亚洲片在线观看 | 国产在线更新 | 国色天香av| 亚洲国产资源 | 国产亚洲情侣一区二区无 | 手机av片 | 国产999精品久久久影片官网 | 美女黄频 | 成片免费观看视频 | 欧美日韩精品网站 | 伊人网综合在线观看 | 福利视频网站 | 9999精品视频 | 日韩三级视频在线观看 | 日韩久久精品一区二区 | 国产色女 | 日本久久久久久久久久 | 日韩欧美大片免费观看 | 日韩三级免费观看 | 亚洲 欧洲 国产 精品 | 999成人| 久久久电影 | 亚洲精品黄网站 | 日韩欧美视频一区二区 | 黄a网站 | 日韩中文字幕电影 | 在线观看精品视频 | 中文字幕在线观看1 | av网站地址 | 亚洲91中文字幕无线码三区 | h视频在线看 | 国产美女在线精品免费观看 | 亚洲男男gⅴgay双龙 | 91精品网站在线观看 | 天天色综合1 | 人人舔人人爱 | 免费久久网站 | 亚洲国产资源 | 免费视频久久久 | 国产精品久久久网站 | 精品国产区在线 | 美女视频永久黄网站免费观看国产 | 999亚洲国产996395 | 欧美精品免费在线 | 中文字幕在线影视资源 | 亚洲精品av中文字幕在线在线 | 国产精品一区二区在线观看免费 | 国产亚洲成人精品 | 在线观看日本韩国电影 | 中文字幕在线看视频 | 久久国内精品 | 亚洲一二三区精品 | 国内精品久久久久影院男同志 | 色婷av| 97在线影视 | 91超在线| 国产在线p| 日本在线观看一区二区 | 最近中文字幕免费av | av三级av | 又黄又爽的视频在线观看网站 | 久久精品导航 | 久久免费精彩视频 | 欧美91精品久久久久国产性生爱 | 色婷婷a| 久久视频国产精品免费视频在线 | 国产精品青草综合久久久久99 | 久久理论影院 | 国产在线精品一区 | 四虎在线观看网址 | 亚洲高清在线精品 | 日本aaaa级毛片在线看 | 中文字幕第一页在线视频 | 国产精品自产拍在线观看中文 | 91精品在线观看入口 | 日韩精品久久久久 | 亚洲aaa毛片 | 国产视频1区2区 | 激情五月婷婷综合 | 久久免费在线观看 | 亚洲国产精品影院 | 9999在线观看 | 97在线观视频免费观看 | 国产精品亚州 | 亚洲 中文 在线 精品 | 91丨九色丨蝌蚪丨老版 | 欧美日韩不卡一区二区 | av在线播放中文字幕 | 国产精品福利在线 | 日韩精品免费一区二区在线观看 | 日本中文字幕久久 | 久热爱 | 91丨九色丨国产在线观看 | 国产美女主播精品一区二区三区 | 天天干天天拍天天操天天拍 | 色综合亚洲精品激情狠狠 | 狠狠狠狠狠狠操 | 亚洲最大av网站 | 久久精品视频播放 | 成人久久久精品国产乱码一区二区 | 久久久久久久久国产 | 手机av电影在线观看 | 91亚瑟视频 | 美女网站免费福利视频 | 亚洲人视频在线 | 91探花在线| 日韩精品一区二区三区中文字幕 | 国产精品亚洲综合久久 | 精品美女久久久久 | 99c视频高清免费观看 | 国产精品久久久免费看 | 日韩成人黄色av | 国产成人精品一区二区三区在线观看 | 成人夜晚看av | 亚洲一区天堂 | 人人爽人人做 | 九色视频网| 日韩久久久久久 | 在线黄av | 日本精品视频在线观看 | 天天操天天谢 | 欧美日韩国产一二三区 | 亚洲人成人天堂h久久 | 啪啪免费视频网站 | 91手机视频在线 | 久久免费看 | 人人干人人做 | 国产精品美女999 | 国产亚洲激情视频在线 | 91天堂素人约啪 | 国内精品久久久久久中文字幕 | 超薄丝袜一二三区 | 国产精品99久久久 | 国产一区高清在线观看 | 99欧美精品 | 色吊丝在线永久观看最新版本 | 午夜精品剧场 | 国产精品99久久久久久久久久久久 | 爱爱av网 | 婷婷在线免费视频 | 日韩| 亚洲欧美日韩国产精品一区午夜 | 欧美日韩视频在线播放 | 婷婷久久综合网 | 欧美成人亚洲 | 人人爽人人爽人人片av | 免费在线观看的av网站 | 欧美激情视频三区 | 久久精品五月 | 二区视频在线观看 | 五月婷婷婷婷婷 | 中文字幕黄色网 | 亚洲专区视频在线观看 | 国产精品国产三级国产不产一地 | 色综合天天色综合 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美 日韩 国产 中文字幕 | 丝袜制服天堂 | 天天要夜夜操 | www.99久久.com | av一级在线观看 | 欧美国产91 | 国产精品久久久一区二区三区网站 | 久久精品视频在线观看免费 | 亚洲丁香久久久 | 久热超碰 | 天天干夜夜爱 | 99爱这里只有精品 | 久久国产精品免费一区二区三区 | 久久夜色精品国产欧美乱 | 国内久久| 久久久久久久久久久久av | 天天操天天操天天操 | av日韩精品 | 中文字幕 欧美性 | av片一区二区 | 性色av免费看| 91人人澡人人爽 | av电影中文字幕在线观看 | 日韩中文字幕在线不卡 | 极品嫩模被强到高潮呻吟91 | 免费看黄网站在线 | 精油按摩av | 日韩高清毛片 | 国内精品久久久 | 免费视频a | 插综合网 | 亚洲视频综合在线 | 欧美狠狠色 | 91九色在线视频 | 免费在线视频一区二区 | 久久久福利 | 激情欧美丁香 | 伊人首页 | 天堂网在线视频 | 国产婷婷在线观看 | 国产女教师精品久久av | 久久婷婷一区二区三区 | 国产乱码精品一区二区三区介绍 | 天天操狠狠操夜夜操 | 日韩高清一区二区 | 久久国产精品免费视频 | 国内精自线一二区永久 | 国产色网 | 国产小视频你懂的 | 天天干天天天 | 亚洲午夜av电影 | 日日夜夜精品免费观看 | 99爱爱| 99产精品成人啪免费网站 | www.久久成人 | 国产91精品一区二区 | 久久精品视频国产 | 激情丁香在线 | 日韩一级网站 | 97国产在线视频 | 九九热精品视频在线观看 | 欧美一区二区伦理片 | 国产精品久久一卡二卡 | 六月色| 色人久久 | 国内精品在线观看视频 | 精品国产免费人成在线观看 | 国产高清黄色 | 欧美福利精品 | 国产在线播放一区二区 | 国产特级毛片aaaaaaa高清 | 精品美女在线观看 | 日躁夜躁狠狠躁2001 | 97超碰资源总站 | 六月激情久久 | 久久人人插 | 久久久久久久影视 | 91chinesexxx | 国产视频在线播放 | av中文字幕在线免费观看 | 在线亚洲观看 | 91在线精品播放 | 久久99在线| 亚洲一级免费电影 | 奇米777777| 欧美中文字幕第一页 | 99视频精品视频高清免费 | 亚洲精品视频在线观看免费视频 | 九色视频网址 | 亚洲成人av片在线观看 | 精品99免费视频 | 亚洲日韩中文字幕在线播放 | 国产成人av在线 | 国产黄色片免费在线观看 | 日韩欧美高清一区二区三区 | 国产精品免费观看在线 | 久久久久久中文字幕 | 成人a级网站 | 黄色在线看网站 | 婷婷综合五月天 | 久久国产精品免费一区二区三区 | 欧美一级性生活视频 | 精品美女在线观看 | 波多野结衣精品在线 | 四虎成人精品永久免费av | 五月综合| 91视频91色 | 日本久久片 | 亚洲涩涩网站 | 日韩,精品电影 | 成人91在线 | 成人免费观看网站 | 91在线小视频 | 2022久久国产露脸精品国产 | 成年人免费看片 | 久草视频免费在线播放 | 亚洲国产午夜精品 | 欧美日韩国产综合网 | 日韩视频一区二区三区 | 狠狠躁日日躁狂躁夜夜躁av | 美女视频久久久 | 九九视频在线播放 | 天天操天天草 | 国产在线1区 | 亚洲伊人av | 免费视频99| 91亚洲精品乱码久久久久久蜜桃 | 久艹在线观看视频 | 国产成人精品午夜在线播放 | 69亚洲乱 | 一级黄色片在线播放 | 91成人精品一区在线播放69 | 日日操天天操夜夜操 | 色www免费视频 | 欧美日韩一区久久 | 国产色综合天天综合网 | 四虎成人精品在永久免费 | 视频直播国产精品 | 国产成人一区二 | 九九九在线观看视频 | 中文在线免费观看 | 最新91在线视频 | 色综合 久久精品 | 久久天天操 | 久久五月天综合 | 久久这里精品视频 | 99久久久久久久久 | av三区在线| 免费视频91蜜桃 | 欧美va天堂va视频va在线 | 久久综合久久久 | 免费在线观看av | 亚洲国产精品电影在线观看 | 久久99国产精品免费 | 成人手机在线视频 | 亚洲开心激情 | 麻豆免费在线播放 | 91传媒91久久久 | 2023亚洲精品国偷拍自产在线 | 96国产精品视频 | 精品国产一区二区三区四区在线观看 | 欧美日韩精品影院 | 一级黄色片在线免费观看 | 成人av免费 | 91超碰免费在线 | 五月天久久精品 | 伊人午夜视频 | 在线电影 一区 | 亚洲伦理一区二区 | 97精品国产97久久久久久免费 | 久久久黄色 | 国产精品1区2区在线观看 | 99这里只有久久精品视频 | 午夜久久精品 | 日日爽天天 | 久久亚洲视频 | 最近免费中文字幕大全高清10 | 久久a热6| 丁香六月婷婷激情 | 国产小视频在线观看 | 九九有精品| 欧美一二三区播放 | 亚洲欧美精品在线 | 日本精品午夜 | 精品91| 中文在线字幕免费观看 | 精品视频免费 |