手把手教你 MongoDB 的安裝與詳細使用(一)

1、什麼是MongoDB ?

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

在高負載的狀況下,添加更多的節點,能夠保證服務器性能。mysql

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

MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。mongodb

MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。shell

2、MongoDB 優缺點

優勢數據庫

  • 文檔結構的存儲方式,可以更便捷的獲取數據
  • 內置GridFS,支持大容量的存儲
  • 海量數據下,性能優越
  • 動態查詢
  • 全索引支持,擴展到內部對象和內嵌數組
  • 查詢記錄分析
  • 快速,就地更新
  • 高效存儲二進制大對象 (好比照片和視頻)
  • 複製(複製集)和支持自動故障恢復
  • 內置 Auto- Sharding 自動分片支持雲級擴展性,分片簡單
  • MapReduce 支持複雜聚合
  • 商業支持,培訓和諮詢

缺點ubuntu

  • 不支持事務操做
  • MongoDB 佔用空間過大 (不過這個肯定對於目前快速下跌的硬盤價格來講,也不算什麼缺點了)
  • MongoDB沒有如MySQL那樣成熟的維護工具
  • 沒法進行關聯表查詢,不適用於關係多的數據
  • 複雜聚合操做經過mapreduce建立,速度慢
  • 模式自由,自由靈活的文件存儲格式帶來的數據錯
  • MongoDB 在你刪除記錄後不會在文件系統回收空間。除非你刪掉數據庫。可是空間沒有被浪費

3、優缺點詳細解釋

1.內置GridFS,支持大容量的存儲:後端

GridFS是一個出色的分佈式文件系統,能夠支持海量的數據存儲。 內置了GridFS了MongoDB,可以知足對大數據集的快速範圍查詢。數組

2.內置 Auto- Sharding 自動分片支持雲級擴展性,分片簡單bash

提供基於Range的Auto Sharding機制:

一個collection可按照記錄的範圍,分紅若干個段,切分到不一樣的Shard上。

Shards能夠和複製結合,配合Replica sets可以實現Sharding+fail-over,不一樣的Shard之間能夠負載均衡。
查詢是對客戶端是透明的。客戶端執行查詢,統計,MapReduce等操做,這些會被MongoDB自動路由到後端的數據節點。
這讓咱們關注於本身的業務,適當的 時候能夠無痛的升級。MongoDB的Sharding設計能力最大可支持約20 petabytes,足以支撐通常應用。
這能夠保證MongoDB運行在便宜的PC服務器集羣上。PC集羣擴充起來很是方便而且成本很低,避免了「sharding」操做的複雜性和成本。

3.海量數據下,性能優越:

在使用場合下,千萬級別的文檔對象,近10G的數據,對有索引的ID的查詢不會比mysql慢,而對非索引字段的查詢,則是全面勝出。 mysql實際沒法勝任大數據量下任意字段的查詢,而mongodb的查詢性能實在讓我驚訝。寫入性能一樣很使人滿意,一樣寫入百萬級別的數 據,mongodb比我之前試用過的couchdb要快得多,基本10分鐘如下能夠解決。補上一句,觀察過程當中mongodb都遠算不上是CPU殺手。

4.全索引支持,擴展到內部對象和內嵌數組

索引一般可以極大的提升查詢的效率,若是沒有索引,MongoDB在讀取數據時必須掃描集合中的每一個文件並選取那些符合查詢條件的記錄。

這種掃描全集合的查詢效率是很是低的,特別在處理大量的數據時,查詢能夠要花費幾十秒甚至幾分鐘,這對網站的性能是很是致命的。

索引是特殊的數據結構,索引存儲在一個易於遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構。

5.MapReduce 支持複雜聚合

MongoDB中聚合(aggregate)主要用於處理數據(諸如統計平均值,求和等),並返回計算後的數據結果。有點相似sql語句中的 count(*)。

與關係型數據庫相比,MongoDB的缺點:

mongodb不支持事務操做:

因此事務要求嚴格的系統(若是銀行系統)確定不能用它。

mongodb不支持事務操做:

因此事務要求嚴格的系統(若是銀行系統)確定不能用它。

mongodb佔用空間過大:

關於其緣由,在官方的FAQ中,提到有以下幾個方面:

一、空間的預分配:爲避免造成過多的硬盤碎片,mongodb每次空間不足時都會申請生成一大塊的硬盤空間,並且申請的量從64M、128M、256M那 樣的指數遞增,直到2G爲單個文件的最大致積。隨着數據量的增長,你能夠在其數據目錄裏看到這些整塊生成容量不斷遞增的文件。

二、字段名所佔用的空間:爲了保持每一個記錄內的結構信息用於查詢,mongodb須要把每一個字段的key-value都以BSON的形式存儲,若是 value域相對於key域並不大,好比存放數值型的數據,則數據的overhead是最大的。一種減小空間佔用的方法是把字段名儘可能取短一些,這樣佔用 空間就小了,但這就要求在易讀性與空間佔用上做爲權衡了。

三、刪除記錄不釋放空間:這很容易理解,爲避免記錄刪除後的數據的大規模挪動,原記錄空間不刪除,只標記「已刪除」便可,之後還能夠重複利用。

四、能夠按期運行db.repairDatabase()來整理記錄,但這個過程會比較緩慢

MongoDB沒有如MySQL那樣成熟的維護工具,這對於開發和IT運營都是個值得注意的地方。

4、安裝與使用

MongoDB 3.6不支持Ubuntu 12.04

本文使用:Ubuntu 16.04 x64

安裝MongoDB的企業版

1. 導入公鑰

導入包管理系統使用的公鑰。

Ubuntu軟件包管理工具(即dpkg和apt)經過要求分發者使用GPG密鑰簽署軟件包來確保軟件包的一致性和真實性,使用如下命令導入。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
複製代碼

2. 建立列表文件

echo "deb [ arch=amd64,arm64,ppc64el,s390x ] http://repo.mongodb.com/apt/ubuntu xenial/mongodb-enterprise/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-enterprise.list
複製代碼

3. 更新倉庫

apt-get update
複製代碼

4. 安裝服務

安裝MongoDB Enterprise軟件包

安裝MongoDB企業版本3.6

sudo apt-get install -y mongodb-enterprise
複製代碼

指定 3.6.2 版本安裝 MongoDB Enterprise

sudo apt-get install -y mongodb-org=3.6.2 mongodb-org-server=3.6.2 mongodb-org-shell=3.6.2 mongodb-org-mongos=3.6.2 mongodb-org-tools=3.6.2
複製代碼

5. 啓動服務

service mongod start
複製代碼

6. 查看日誌

確認MongoDB已經成功啓動,查看/var/log/mongodb/mongod.log 日誌

less /var/log/mongodb/mongod.log 
複製代碼

驗證 mongod 已成功啓動,經過檢查日誌文件的內容

[initandlisten] waiting for connections on port 27017
複製代碼

<port>mongod監聽的端口。若是您修改了 配置文件中的net.port設置/etc/mongod.conf,端口可能會有所不一樣。

您可能會在mongod 輸出中看到非嚴重警告。只要你看到上面顯示的日誌行,你能夠放心地忽略這些警告。

4、MongoDB 使用

1. 鏈接 MongoDB

mongo在同一臺主機上啓動一個shell mongod。使用--host命令行選項指定mongod 監聽的本地主機地址和端口:

mongo --host 127.0.0.1:27017
複製代碼
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.2
Server has startup warnings: 
2018-01-25T12:42:31.472+0000 I STORAGE  [initandlisten] 
2018-01-25T12:42:31.473+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-01-25T12:42:31.473+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-01-25T12:42:31.510+0000 I CONTROL  [initandlisten] 
2018-01-25T12:42:31.510+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-01-25T12:42:31.510+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-01-25T12:42:31.510+0000 I CONTROL  [initandlisten] 
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] 
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] 
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-01-25T12:42:31.511+0000 I CONTROL  [initandlisten] 
> 1+1
2
複製代碼

上面簡單測試了:1+1

退出:Ctrl+c

2. MongoDB 建立數據庫

語法

use DATABASE_NAME
複製代碼

建立一個 souyunku 的數據庫,使用 db 命令查看

> use souyunku
switched to db souyunku
> db
souyunku
>
複製代碼

查看全部數據庫使用show dbs

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
> 
複製代碼

能夠看到,剛建立的數據庫 souyunku 並不在數據庫的列表中, 要顯示它,咱們須要向 souyunku 數據庫插入一些數據。

> db.souyunku.insert({"name":"關注公衆號,搜雲庫,專一於開發技術的研究與知識分享"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin     0.000GB
config    0.000GB
local     0.000GB
souyunku  0.000GB
test      0.000GB
>
複製代碼

MongoDB 中默認的數據庫爲 test,若是你沒有建立新的數據庫,集合將存放在 test 數據庫中。

3. MongoDB 刪除數據庫

MongoDB 刪除數據庫的語法

db.dropDatabase()
複製代碼

實例

如下操做會把souyunku 數據刪除

查看全部數據庫

> show dbs
admin     0.000GB
config    0.000GB
local     0.000GB
souyunku  0.000GB
test      0.000GB
複製代碼

切換到souyunku 數據庫

> use souyunku
switched to db souyunku
複製代碼

使用db.dropDatabase() 刪除數據庫

> db.dropDatabase()
{ "dropped" : "souyunku", "ok" : 1 }
複製代碼

看到已經刪除了

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
> 
複製代碼

4. MongoDB 插入文檔

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

db.COLLECTION_NAME.insert(document)
複製代碼

如下文檔能夠存儲在 MongoDBsouyunku數據庫 的 col 集合中:

切換到souyunku 數據庫

> use souyunku
switched to db souyunku
複製代碼
db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 數據庫',
    by: '搜雲庫教程-專一於開發技術的研究與知識分享',
    url: 'http://www.souyunku.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
複製代碼
> db.col.find()
複製代碼

以上實例中 col 是咱們的集合名,若是該集合不在該數據庫中, MongoDB 會自動建立該集合並插入文檔。 查看已插入文檔:

響應

{
	"_id": ObjectId("5a69eb32ec3046ee8ae54dbb"),
	"title": "MongoDB 教程",
	"description": "MongoDB 是一個 Nosql 數據庫",
	"by": "搜雲庫教程-專一於開發技術的研究與知識分享",
	"url": "http://www.souyunku.com",
	"tags": ["mongodb", "database", "NoSQL"],
	"likes": 100
}
>
複製代碼

咱們也能夠將數據定義爲一個變量,以下所示:

document=({title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 數據庫',
    by: '搜雲庫教程-專一於開發技術的研究與知識分享',
    url: 'http://www.souyunku.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
複製代碼

執行後顯示結果以下:

{
	"title" : "MongoDB 教程",
	"description" : "MongoDB 是一個 Nosql 數據庫",
	"by" : "搜雲庫教程-專一於開發技術的研究與知識分享",
	"url" : "http://www.souyunku.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
複製代碼

執行插入操做:

> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
> 
複製代碼

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

3.2 版本後還有如下幾種語法可用於插入文檔:

db.collection.insertOne():向指定集合中插入一條文檔數據。

db.collection.insertMany():向指定集合中插入多條文檔數據。

插入單條數據

> var document = db.collection.insertOne({"title": "搜雲庫"})
> document
{
	"acknowledged" : true,
	"insertedId" : ObjectId("5a69f0dfec3046ee8ae54dbe")
}
> db.collection.find()
{ "_id" : ObjectId("5a69f0dfec3046ee8ae54dbe"), "title" : "搜雲庫" }
>
複製代碼

插入多條數據

> var res = db.collection.insertMany([{"title": "搜雲庫"}, {'description': "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享"}])
> res
{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("5a69f188ec3046ee8ae54dbf"),
		ObjectId("5a69f188ec3046ee8ae54dc0")
	]
}
> db.collection.find()
{ "_id" : ObjectId("5a69f0dfec3046ee8ae54dbe"), "title" : "搜雲庫" }
{ "_id" : ObjectId("5a69f188ec3046ee8ae54dc0"), "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享" }
> 
複製代碼

5. MongoDB 刪除文檔

MongoDB remove()函數是用來移除集合中的數據。

MongoDB數據更新可使用update()函數。在執行remove()函數前先執行find()命令來判斷執行的條件是否正確,這是一個比較好的習慣。

remove() 方法已通過時了,如今官方推薦使用 deleteOne()deleteMany() 方法。

如刪除集合下所有文檔:

> db.col.deleteMany({})
{ "acknowledged" : true, "deletedCount" : 2 }
> db.col.find()
> 
複製代碼

刪除 title 等於 "搜雲庫" 的所有文檔:

> db.collection.deleteMany({ title : "搜雲庫"})
{ "acknowledged" : true, "deletedCount" : 2 }
> 
> db.collection.find()
{ "_id" : ObjectId("5a69f188ec3046ee8ae54dc0"), "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享" }
> 
複製代碼

刪除 weixin 等於 "souyunku" 的一個文檔:

> db.col.insert({weixin:"souyunku"})
WriteResult({ "nInserted" : 1 })
> db.col.find()
{ "_id" : ObjectId("5a69f5a0ec3046ee8ae54dc1"), "weixin" : "souyunku" }
> db.col.deleteOne({weixin:"souyunku"})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.col.find()
>
複製代碼

6. MongoDB 查詢文檔

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

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

語法

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

> db.collection.find(query, projection)
複製代碼
  • query :可選,使用查詢操做符指定查詢條件
  • projection :可選,使用投影操做符指定返回的鍵。查詢時返回文檔中全部鍵值, 只需省略該參數便可(默認省略)。

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

db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 數據庫',
    by: '搜雲庫教程-專一於開發技術的研究與知識分享',
    url: 'http://www.souyunku.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
複製代碼
> db.col.find().pretty()
{
	"_id" : ObjectId("5a69f93598891b4abe9cc8cb"),
	"title" : "MongoDB 教程",
	"description" : "MongoDB 是一個 Nosql 數據庫",
	"by" : "搜雲庫教程-專一於開發技術的研究與知識分享",
	"url" : "http://www.souyunku.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
複製代碼

MongoDB 與 RDBMS Where 語句比較

6.1 MongoDB AND 條件

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

語法格式以下:

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

實例

如下實例經過 bytitle 鍵來查詢 數據

> db.col.find({"by":"搜雲庫教程-專一於開發技術的研究與知識分享", "title":"MongoDB 教程"}).pretty()
{
	"_id" : ObjectId("5a69f93598891b4abe9cc8cb"),
	"title" : "MongoDB 教程",
	"description" : "MongoDB 是一個 Nosql 數據庫",
	"by" : "搜雲庫教程-專一於開發技術的研究與知識分享",
	"url" : "http://www.souyunku.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
複製代碼

以上實例中相似於 WHERE 語句:WHERE by='搜雲庫教程-專一於開發技術的研究與知識分享' AND title='MongoDB 教程'

6.2 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("5a69f93598891b4abe9cc8cb"),
	"title" : "MongoDB 教程",
	"description" : "MongoDB 是一個 Nosql 數據庫",
	"by" : "搜雲庫教程-專一於開發技術的研究與知識分享",
	"url" : "http://www.souyunku.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
> 
複製代碼

6.3 AND 和 OR 聯合使用

如下實例演示了 ANDOR 聯合使用,相似常規 SQL 語句爲: 'where likes>50 AND (by = '搜雲庫教程-專一於開發技術的研究與知識分享' OR title = 'MongoDB 教程')'

> db.col.find({"likes": {$gt:50}, $or: [{"by": "搜雲庫教程-專一於開發技術的研究與知識分享"},{"title": "MongoDB 教程"}]}).pretty()
{
	"_id" : ObjectId("5a69f93598891b4abe9cc8cb"),
	"title" : "MongoDB 教程",
	"description" : "MongoDB 是一個 Nosql 數據庫",
	"by" : "搜雲庫教程-專一於開發技術的研究與知識分享",
	"url" : "http://www.souyunku.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
> 
複製代碼

7. MongoDB 條件操做符

條件操做符用於比較兩個表達式並從MongoDB集合中獲取數據。

MongoDB中條件操做符有:

(>) 大於 - $gt
(<) 小於 - $lt
(>=) 大於等於 - $gte
(<= ) 小於等於 - $lte
複製代碼

清空集合數據

db.col.remove({})
複製代碼

插入如下數據

> db.col.insert({
    title: '測試數據200', 
    description: '關注公衆號,搜雲庫,專一於開發技術的研究與知識分享',
    by: '搜雲庫',
    url: 'http://www.souyunku.com',
    tags: ['test'],
    likes: 200
})
複製代碼
> db.col.insert({
	title: '測試數據150', 
    description: '關注公衆號,搜雲庫,專一於開發技術的研究與知識分享',
    by: '搜雲庫',
    url: 'http://www.souyunku.com',
    tags: ['test'],
    likes: 150
})
複製代碼
> db.col.insert({
	title: '測試數據100', 
    description: '關注公衆號,搜雲庫,專一於開發技術的研究與知識分享',
    by: '搜雲庫',
    url: 'http://www.souyunku.com',
    tags: ['test'],
    likes: 100
})
複製代碼

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

> db.col.find()
{ "_id" : ObjectId("5a6a083598891b4abe9cc8cc"), "title" : "測試數據200", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 200 }
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "測試數據150", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "測試數據100", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
> 
複製代碼

7.1 MongoDB (>) 大於操做符 - $gt

db.col.find({"likes" : {$gt : 100}})
複製代碼

相似於SQL語句:

select * from col where likes > 100;
複製代碼

輸出結果

{ "_id" : ObjectId("5a6a083598891b4abe9cc8cc"), "title" : "測試數據200", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 200 }
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "測試數據150", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
>
複製代碼

7.2 MongoDB(>=)大於等於操做符 - $gte

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

db.col.find({likes : {$gte : 100}})
複製代碼

相似於SQL語句:

select * from col where likes >=100;
複製代碼

輸出結果:

{ "_id" : ObjectId("5a6a083598891b4abe9cc8cc"), "title" : "測試數據200", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 200 }
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "測試數據150", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "測試數據100", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
>
複製代碼

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("5a6a084498891b4abe9cc8ce"), "title" : "測試數據100", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
> 
複製代碼

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("5a6a083e98891b4abe9cc8cd"), "title" : "測試數據150", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "測試數據100", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
> 
複製代碼

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("5a6a083e98891b4abe9cc8cd"), "title" : "測試數據150", "description" : "關注公衆號,搜雲庫,專一於開發技術的研究與知識分享", "by" : "搜雲庫", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
> 
複製代碼

一些簡寫說明:

$gt -------- greater than  >

$gte --------- gt equal  >=

$lt -------- less than  <

$lte --------- lt equal  <=

$ne ----------- not equal  !=

$eq  --------  equal  =
複製代碼

參考:

Runoob 教程:http://www.runoob.com/mongodb/mongodb-tutorial.html
Tutorials 教程:Pointhttps://www.tutorialspoint.com/mongodb/mongodb_advantages.htm
MongoDB 官網地址:https://www.mongodb.com
MongoDB 官方英文文檔:https://docs.mongodb.com/manual
MongoDB 各平臺下載地址:https://www.mongodb.com/download-center#community
MongoDB 安裝 https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-ubuntu

Contact

關注公衆號-搜雲庫
搜雲庫
相關文章
相關標籤/搜索