摘要:如刪除集合下全部文檔刪除等于搜云庫的全部文檔搜云庫關注公眾號,搜云庫,專注于開發技術的研究與知識分享刪除等于的一個文檔查詢文檔查詢文檔使用方法。
一、什么是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 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD52. 創建列表文件
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.list3. 更新倉庫
apt-get update4. 安裝服務
安裝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.25. 啟動服務
service mongod start6. 查看日志
確認MongoDB已經成功啟動,查看/var/log/mongodb/mongod.log 日志
less /var/log/mongodb/mongod.log
驗證 mongod 已成功啟動,通過檢查日志文件的內容
[initandlisten] waiting for connections on port 27017
您可能會在mongod 輸出中看到非嚴重警告。只要你看到上面顯示的日志行,你可以放心地忽略這些警告。
四、MongoDB 使用 1. 連接 MongoDBmongo在同一臺主機上啟動一個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 =
參考:
Runoob 教程:http://www.runoob.com/mongodb...
Tutorials 教程:Pointhttps://www.tutorialspoint.co...
MongoDB 官網地址:https://www.mongodb.com
MongoDB 官方英文文檔:https://docs.mongodb.com/manual
MongoDB 各平臺下載地址:https://www.mongodb.com/downl...
MongoDB 安裝 https://docs.mongodb.com/manu...
作者:鵬磊
出處:http://www.ymq.io/2018/01/26/MongoDB-1
Email:admin@souyunku.com
版權歸作者所有,轉載請注明出處
Wechat:關注公眾號,搜云庫,專注于開發技術的研究與知識分享
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19171.html
摘要:連接數據庫引子博客肯定是以用戶為中心,包括用戶的注冊,用戶的登錄,用戶發表留言,對留言進行評價等等功能,所以,自然離不開數據庫。概念解析在中基本的概念是文檔集合數據庫。這兩種方式連接都需要,或者主機名字,數據庫名字,端口號,配置項等。 連接數據庫 引子 博客肯定是以用戶為中心,包括用戶的注冊,用戶的登錄,用戶發表留言,對留言進行評價等等功能,所以,自然離不開數據庫。 MongoDB M...
摘要:實例教程是一個數據庫搜云庫教程專注于開發技術的研究與知識分享方法中你也可以設置使用多個字段創建索引關系型數據庫中稱作復合索引。 上一篇文章練習了,MongoDB 的以下操作 安裝 MongoDB 服務 連接 MongoDB MongoDB 創建數據庫 MongoDB 刪除數據庫 MongoDB 插入文檔 MongoDB 刪除文檔 MongoDB 查詢文檔 MongoDB AND 條件...
摘要:上一篇文章手把手教你如何用構建技術文章聚合平臺一介紹了如何使用搭建的運行環境,并且將與集成,對掘金進行技術文章的抓取,最后可以查看抓取結果。本篇文章將繼續講解如何利用編寫一個精簡的聚合平臺,將抓取好的文章內容展示出來。 上一篇文章《手把手教你如何用Crawlab構建技術文章聚合平臺(一)》介紹了如何使用搭建Crawlab的運行環境,并且將Puppeteer與Crawlab集成,對掘金、...
摘要:聲明構造函數,作用是把從數據庫取出的數據實例化為對象。該構造函數傳入的值為從中取出的數據省略接口提供增刪改查接口實現提供增刪改查接口實現提供了一個類似于的設計的類。 本文快速入門,MongoDB 結合SpringBoot starter-data-mongodb 進行增刪改查 1、什么是MongoDB ? MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。...
摘要:本文將介紹如何使用和抓取主流的技術博客文章,然后用搭建一個小型的技術文章聚合平臺。是谷歌開源的基于和的自動化測試工具,可以很方便的讓程序模擬用戶的操作,對瀏覽器進行程序化控制。相對于,是新的開源項目,而且是谷歌開發,可以使用很多新的特性。 背景 說到爬蟲,大多數程序員想到的是scrapy這樣受人歡迎的框架。scrapy的確不錯,而且有很強大的生態圈,有gerapy等優秀的可視化界面。但...
閱讀 2236·2021-11-24 11:15
閱讀 3080·2021-11-24 10:46
閱讀 1378·2021-11-24 09:39
閱讀 3924·2021-08-18 10:21
閱讀 1478·2019-08-30 15:53
閱讀 1395·2019-08-30 11:19
閱讀 3320·2019-08-29 18:42
閱讀 2321·2019-08-29 16:58