MongoDB數(shù)據(jù)庫(kù)條件查詢技巧總結(jié)
前言
今天不討論使用自帶 UI 界面的連接工具,僅討論使用命令行查詢 MongoDB 數(shù)據(jù)庫(kù)的情況。在排查問(wèn)題的時(shí)候,很多時(shí)候直接使用命令行更加方便。但是有一個(gè)前提,我們必須首先掌握 MongoDB 數(shù)據(jù)庫(kù)命令行常用命令才行,本文以條件查詢?yōu)槔M(jìn)行介紹。
連接數(shù)據(jù)庫(kù)
首先,使用命令行連接數(shù)據(jù)庫(kù),命令如下:
mongo 127.0.0.1:27017
輸出如下結(jié)果表示連接成功:

查看數(shù)據(jù)倉(cāng)庫(kù)
查看數(shù)據(jù)倉(cāng)庫(kù)列表,命令如下:
show dbs
查詢結(jié)果如下:

查看數(shù)據(jù)庫(kù)表
進(jìn)入對(duì)應(yīng)的數(shù)據(jù)倉(cāng)庫(kù),就可以查看其中的數(shù)據(jù)庫(kù)表了,我們以數(shù)據(jù)倉(cāng)庫(kù) bag 為例進(jìn)行說(shuō)明,進(jìn)入或者選中數(shù)據(jù)倉(cāng)庫(kù)命令如下:
use bag
然后有兩種方式查看數(shù)據(jù)庫(kù)表,命令如下:
方式一、tables命令
show tables
查詢結(jié)果如下:

方式二、cellections命令
show cellections

查看數(shù)據(jù)表內(nèi)容
通過(guò)上面的命令,我們已經(jīng)知道了數(shù)據(jù)庫(kù)中的數(shù)據(jù)表,接下來(lái)就可以查看每個(gè)表中具體的內(nèi)容了,我們以 files 表為例進(jìn)行說(shuō)明,查詢命令如下:
db.files.find()
查詢結(jié)果如下:

PS:查詢內(nèi)容只截取了部分。
此時(shí),雖然我們查看到了表中的內(nèi)容,但是閱讀起來(lái)不是很方便。有沒(méi)有方法讓查詢結(jié)果更加直觀呢?答案是,有的。具體命令如下:
db.files.find().pretty()
查詢結(jié)果如下:

其實(shí),pretty() 方法就是用來(lái)格式化顯示文檔的。
查詢方式
倒序查詢
更多的時(shí)候,我們比較關(guān)心新添加的文檔記錄,因此,查詢的時(shí)候最好可以倒序查詢文檔記錄。此時(shí),sort() 方法就被用到了,我們以 _id 屬性為例進(jìn)行說(shuō)明,命令如下:
db.files.find().sort({_id:-1})
查詢結(jié)果如下:

每次查詢的內(nèi)容顯示的條目有些多,其實(shí),我們也可以自定義查詢結(jié)果的數(shù)量。此時(shí),我們就要用到 limit() 方法了,命令如下:
db.files.find().sort({_id:-1}).limit(3)
查詢結(jié)果如下:

條件查詢
我們按照自己的需要,根據(jù)具體的屬性查詢自己想要的結(jié)果,這里演示一個(gè)例子。我們先查詢視頻時(shí)長(zhǎng)最大的兩個(gè)文件記錄,命令如下:
db.files.find().pretty().sort({duration:-1}).limit(2)
查詢結(jié)果如下:

根據(jù)查詢結(jié)果,我們可以知道時(shí)長(zhǎng)最長(zhǎng)的記錄分別是 6980秒、1556秒。那么,我們查詢時(shí)長(zhǎng)大于 3000秒的記錄肯定只有一個(gè),那么我們就來(lái)試一下,命令如下:
db.files.find({"duration":{$gt:3000}}).pretty()
查詢結(jié)果如下:

Nice,和我們預(yù)想的一樣,命令行非常好使。
這里列一下關(guān)于 等于、小于、小于等于、大于、大于等于、不等于 的命令示例,以后查看就非常方便了。
| 操作 | 格式 | 范例 | RDBMS中的類似語(yǔ)句 |
|---|---|---|---|
| 等于 | {<key>:<value>} | db.col.find({"duration":"6980"}).pretty() | where duration = '6980' |
| 小于 | {<key>:{$lt:<value>}} | db.col.find({"duration":{$lt:50}}).pretty() | where likes < 50 |
| 小于或等于 | {<key>:{$lte:<value>}} | db.col.find({"duration":{$lte:50}}).pretty() | where likes <= 50 |
| 大于 | {<key>:{$gt:<value>}} | db.col.find({"duration":{$gt:50}}).pretty() | where likes > 50 |
| 大于或等于 | {<key>:{$gte:<value>}} | db.col.find({"duration":{$gte:50}}).pretty() | where likes >= 50 |
| 不等于 | {<key>:{$ne:<value>}} | db.col.find({"duration":{$ne:50}}).pretty() | where likes != 50 |
結(jié)尾
通過(guò)上面的簡(jiǎn)單介紹,我們基本上對(duì)于 MongoDB 的命令行條件查詢就清楚了,特別是倒序查詢和條件查詢結(jié)合實(shí)例應(yīng)該更容易理解。好了,今天的分享就這么多,下期再見(jiàn)。
總結(jié)
到此這篇關(guān)于MongoDB數(shù)據(jù)庫(kù)條件查詢技巧的文章就介紹到這了,更多相關(guān)MongoDB條件查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mongodb?刪除文檔Delete與Remove的區(qū)別解析
這篇文章主要介紹了Mongodb?刪除文檔Delete與Remove的區(qū)別,要從集合中刪除所有文檔,請(qǐng)將空過(guò)濾器文檔傳遞{}給該?db.collection.deleteMany()方法,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
Centos7 yum安裝mongodb實(shí)現(xiàn)步驟詳解
這篇文章主要介紹了Centos7 yum安裝mongodb實(shí)現(xiàn)步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
PHP MongoDB GridFS 存儲(chǔ)文件的方法詳解
這篇文章主要介紹了PHP MongoDB GridFS 存儲(chǔ)文件的方法詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10
CentOS 6.5 x64系統(tǒng)中安裝MongoDB 2.6.0二進(jìn)制發(fā)行版教程
這篇文章主要介紹了CentOS 6.5 x64系統(tǒng)中安裝MongoDB 2.6.0二進(jìn)制發(fā)行版教程,本文分為6個(gè)步驟完成MongoDB的安裝和啟動(dòng),需要的朋友可以參考下2015-01-01
centos離線安裝mongodb-database-tools方法詳解
這篇文章主要介紹了centos離線安裝mongodb-database-tools方法詳解的相關(guān)資料,需要的朋友可以參考下2022-11-11
MongoDB學(xué)習(xí)筆記—Linux下搭建MongoDB環(huán)境
本篇文章主要介紹了Linux下搭建MongoDB環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
JavaScript按日期查詢MongoDB中的數(shù)據(jù)的要點(diǎn)示例
這篇文章主要介紹了JavaScript按日期查詢MongoDB中數(shù)據(jù)的要點(diǎn)示例,MongoDB所支持的BSON有JSON沒(méi)有的一些數(shù)據(jù)類型,如Date和BinData類型,需要的朋友可以參考下2016-03-03

