您好,登錄后才能下訂單哦!
小編給大家分享一下MongoDB是什么,優缺點有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
一、什么是MongoDB ?
MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。
在高負載的情況下,添加更多的節點,可以保證服務器性能。
MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。
MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。
二、MongoDB 優缺點
優點
·文檔結構的存儲方式,能夠更便捷的獲取數據
·內置GridFS,支持大容量的存儲
·海量數據下,性能優越
·動態查詢
·全索引支持,擴展到內部對象和內嵌數組
·查詢記錄分析
·快速,就地更新
·高效存儲二進制大對象 (比如照片和視頻)
·復制(復制集)和支持自動故障恢復
·內置 Auto- Sharding 自動分片支持云級擴展性,分片簡單
·MapReduce 支持復雜聚合
·商業支持,培訓和咨詢
缺點
·不支持事務操作
·MongoDB 占用空間過大 (不過這個確定對于目前快速下跌的硬盤價格來說,也不算什么缺點了)
·MongoDB沒有如MySQL那樣成熟的維護工具
·無法進行關聯表查詢,不適用于關系多的數據
·復雜聚合操作通過mapreduce創建,速度慢
·模式自由,自由靈活的文件存儲格式帶來的數據錯
·MongoDB 在你刪除記錄后不會在文件系統回收空間。除非你刪掉數據庫。但是空間沒有被浪費
三、優缺點詳細解釋
1.內置GridFS,支持大容量的存儲:
GridFS是一個出色的分布式文件系統,可以支持海量的數據存儲。
內置了GridFS了MongoDB,能夠滿足對大數據集的快速范圍查詢。
2.內置 Auto- Sharding 自動分片支持云級擴展性,分片簡單
提供基于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中,提到有如下幾個方面:
1、空間的預分配:為避免形成過多的硬盤碎片,mongodb每次空間不足時都會申請生成一大塊的硬盤空間,而且申請的量從64M、128M、256M那 樣的指數遞增,直到2G為單個文件的最大體積。隨著數據量的增加,你可以在其數據目錄里看到這些整塊生成容量不斷遞增的文件。
2、字段名所占用的空間:為了保持每個記錄內的結構信息用于查詢,mongodb需要把每個字段的key-value都以BSON的形式存儲,如果 value域相對于key域并不大,比如存放數值型的數據,則數據的overhead是最大的。一種減少空間占用的方法是把字段名盡量取短一些,這樣占用 空間就小了,但這就要求在易讀性與空間占用上作為權衡了。
3、刪除記錄不釋放空間:這很容易理解,為避免記錄刪除后的數據的大規模挪動,原記錄空間不刪除,只標記“已刪除”即可,以后還可以重復利用。
4、可以定期運行db.repairDatabase()來整理記錄,但這個過程會比較緩慢。
MongoDB沒有如MySQL那樣成熟的維護工具,這對于開發和IT運營都是個值得注意的地方。
四、安裝與使用
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. 更新倉庫
echo 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 輸出中看到非嚴重警告。只要你看到上面顯示的日志行,你可以放心地忽略這些警告。
五、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)
以下文檔可以存儲在 MongoDB 的 souyunku數據庫 的 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()
實例
以下實例通過 by 和 title 鍵來查詢數據:
> 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 聯合使用
以下實例演示了 AND 和 OR 聯合使用,類似常規 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 =
看完了這篇文章,相信你對MongoDB是什么,優缺點有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。