1. 程式人生 > >Mongodb基礎實踐(二)

Mongodb基礎實踐(二)

數據庫查詢 表達式 where 技術 文章

在前面的文章裏面主要介紹了MongoDB的文檔,集合,數據庫等操作和對文檔的增、刪、改相關知識,接下來會總結一點有關查詢的相關知識。

在MySQL中,我們知道數據查詢是優化的主要內容,讀寫分離等技術都是可以用來處理數據庫查詢優化的,足以見數據庫查詢是每個系統中很重要的一部分,之前介紹了find的簡單使用,下面會介紹一些相對比較復雜一點的查詢。

一、數據查詢

MySQL數據庫中主要是用select 結合where子句實現數據的查詢,功能特別強大,例如多表聯合查詢、支持正則表達式等。不在這裏做過多的相關介紹。這裏主要介紹MongoDB的相關查詢,MongoDB中主要用find()實現數據的查詢,同時也可以使用一些條件限制。

1.1顯示單條數據

在上篇文章中提到了find()的使用,但是每次查詢數據,都是查詢所有的,顯示其中的一部分,可以用it叠代。有時候我們想要查詢其中的一條數據,具體操作要根據具體需求實現。

MongoDB 查詢數據的語法

db.collection.find(query, projection)

query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。可以使用 pretty() 方法以易讀的方式來讀取數據,,語法格式如下

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

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

例如:

db.winner.find().pretty()
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1eaaa464fa8a557e96"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e97"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e98"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d21aaa464fa8a557e99"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d22aaa464fa8a557e9a"), "winne" : 1955 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }

1、查詢某個集合中的所有數據

db.winner.find()
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1eaaa464fa8a557e96"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e97"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e98"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d21aaa464fa8a557e99"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d22aaa464fa8a557e9a"), "winne" : 1955 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec8"), "winne" : 45 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec9"), "winne" : 46 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557eca"), "winne" : 47 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecb"), "winne" : 48 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecc"), "winne" : 49 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecd"), "winne" : 50 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ece"), "winne" : 51 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecf"), "winne" : 52 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ed0"), "winne" : 53 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ed1"), "winne" : 54 }
Type "it" for more

默認顯示20條數據,其他數據可以輸入it叠代。

2、顯示一條數據

find()是輸出所有結果,裏面可能有些文檔內容相同,但是“_id”肯定是不一樣的,這時我們可以使用findOne()方法查詢,或者可以使用db.winner.find({winne:1955}).limit(1)。

db.winner.find({winne:1955})
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1eaaa464fa8a557e96"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e97"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d1faaa464fa8a557e98"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d21aaa464fa8a557e99"), "winne" : 1955 }
{ "_id" : ObjectId("592e7d22aaa464fa8a557e9a"), "winne" : 1955 }
假如要查詢winner集合中winne=1955的一條數據,而用find()查詢出所有的數據,這時就可以使用findOne()
db.winner.findOne({winne:1955})
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }

或者可以使用
db.winner.find({winne:1955}).limit(1)
{ "_id" : ObjectId("592e7d1caaa464fa8a557e95"), "winne" : 1955 }
兩者的區別
findOne()有點類似MySQL裏面的distinct,會返回查詢的第一條結果,如果搜索不到想要的數據就會
返回NULL,
db.winner.findOne({winne:200888})
null
db.winner.find({winne:1955}).limit(1)方法就和MySQL裏面的limit是一樣的,主要是限制查詢結果的條數。

3、查詢滿足一定條件的數據

在MySQL中查詢時,可以結合where以及字段等信息查詢數據,而MongoDB中也是可以的,同樣可以支持一些條件判斷語句。


格式範例RDBMS中的類似語句
等於{<key>:<value>}db.col.find({"winne":"1995"}).pretty()where winne = ‘50‘
小於{<key>:{$lt:<value>}}db.col.find({"winne":{$lt:50}}).pretty()where winne < 50
小於或等於{<key>:{$lte:<value>}}db.col.find({"winne":{$lte:50}}).pretty()where winne <= 50
大於{<key>:{$gt:<value>}}db.col.find({"winne":{$gt:50}}).pretty()where winne > 50
大於或等於{<key>:{$gte:<value>}}db.col.find({"winne":{$gte:50}}).pretty()where winne >= 50
不等於{<key>:{$ne:<value>}}db.col.find({"winne":{$ne:50}}).pretty()where winne != 50
$gt -------- greater than   $gte --------- gt equal
$lt -------- less than      $lte --------- lt equal
$ne ----------- not equal

1、查詢winner集合中winne<50的相關數據
 db.winner.find({winne:{$lt :50}})
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec8"), "winne" : 45 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec9"), "winne" : 46 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557eca"), "winne" : 47 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecb"), "winne" : 48 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ecc"), "winne" : 49 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f28"), "winne" : 41 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f29"), "winne" : 42 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2a"), "winne" : 43 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2b"), "winne" : 44 }
2、查詢winner集合中40=<winne<50的相關數據
db.winner.find({winne:{$gte:40,$lt:45}})
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec4"), "winne" : 41 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec5"), "winne" : 42 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec6"), "winne" : 43 }
{ "_id" : ObjectId("592e7e14aaa464fa8a557ec7"), "winne" : 44 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f28"), "winne" : 41 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f29"), "winne" : 42 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2a"), "winne" : 43 }
{ "_id" : ObjectId("592e7e17aaa464fa8a557f2b"), "winne" : 44 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8c"), "winne" : 41 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8d"), "winne" : 42 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8e"), "winne" : 43 }
{ "_id" : ObjectId("592e7e18aaa464fa8a557f8f"), "winne" : 44 }

4、MongoDB AND 條件

MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,語法格式如下:

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

#插入測試數據
for(i=0;i<20;i++)db.info2.insert({name:"linux",
object:"SA",
company:"docker",
phone:i})
for(i=0;i<20;i++)db.info2.insert({name:"openstack",
object:"DBA",
company:"could",
phone:i})

#檢查測試數據
> db.info2.find()
db.info2.find()
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f838dd276944818f7edb9"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 5 }
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
{ "_id" : ObjectId("592f838dd276944818f7edbf"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 11 }
{ "_id" : ObjectId("592f838dd276944818f7edc0"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 12 }
{ "_id" : ObjectId("592f838dd276944818f7edc1"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 13 }
{ "_id" : ObjectId("592f838dd276944818f7edc2"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 14 }
{ "_id" : ObjectId("592f838dd276944818f7edc3"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 15 }
{ "_id" : ObjectId("592f838dd276944818f7edc4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 16 }
{ "_id" : ObjectId("592f838dd276944818f7edc5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 17 }
{ "_id" : ObjectId("592f838dd276944818f7edc6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 18 }
{ "_id" : ObjectId("592f838dd276944818f7edc7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 19 }
>db.info2.find().count()  #檢查數據的條數
40
#篩選name=linux object=SA phone<5
db.info2.find({name:"linux",object:"SA",phone:{$lt:5}})
 執行
 db.info2.find({name:"linux",object:"SA",phone:{$lt:5}})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
篩選name=linux object=SA   5<phone<=10
db.info2.find({name:"linux",object:"SA",phone:{"$gt":5,"$lte":10}})
db.info2.find({name:"linux",object:"SA",phone:{"$gt":5,"$lte":10}})
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
篩選  5<phone<=10
db.info2.find({phone:{"$gt":5,"$lte":10}})
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
{ "_id" : ObjectId("592f838fd276944818f7edce"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 6 }
{ "_id" : ObjectId("592f838fd276944818f7edcf"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 7 }
{ "_id" : ObjectId("592f838fd276944818f7edd0"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 8 }
{ "_id" : ObjectId("592f838fd276944818f7edd1"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 9 }
{ "_id" : ObjectId("592f838fd276944818f7edd2"), "name" : "openstack", "object" : "DBA", "company" : "could", "phone" : 10 }

5 MongoDB OR 條件
MongoDB 除了有類似MySQL的AND條件語句外,還有OR 條件語句,OR 條件語句使用了關鍵字 $or,語法格式如下:
>db.collections.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()

#查name=linux 或者object=redis
db.info2.find(
{$or:[{name:"linux"},{object:"redis"}]

}
)
db.info2.find(db.info2.find(
... {$or:[{name:"linux"},{object:"redis"}]{$or:[{name:"linux"},{object:"redis"}]
... 
... }}
... ))
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f838dd276944818f7edb9"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 5 }
{ "_id" : ObjectId("592f838dd276944818f7edba"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 6 }
{ "_id" : ObjectId("592f838dd276944818f7edbb"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 7 }
{ "_id" : ObjectId("592f838dd276944818f7edbc"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 8 }
{ "_id" : ObjectId("592f838dd276944818f7edbd"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 9 }
{ "_id" : ObjectId("592f838dd276944818f7edbe"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 10 }
{ "_id" : ObjectId("592f838dd276944818f7edbf"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 11 }
{ "_id" : ObjectId("592f838dd276944818f7edc0"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 12 }
{ "_id" : ObjectId("592f838dd276944818f7edc1"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 13 }
{ "_id" : ObjectId("592f838dd276944818f7edc2"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 14 }
{ "_id" : ObjectId("592f838dd276944818f7edc3"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 15 }
{ "_id" : ObjectId("592f838dd276944818f7edc4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 16 }
{ "_id" : ObjectId("592f838dd276944818f7edc5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 17 }
{ "_id" : ObjectId("592f838dd276944818f7edc6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 18 }
{ "_id" : ObjectId("592f838dd276944818f7edc7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 19 }
Type "it" for more
> itit
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede1"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 5 }
{ "_id" : ObjectId("592f8964d276944818f7ede2"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 6 }
{ "_id" : ObjectId("592f8964d276944818f7ede3"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 7 }
{ "_id" : ObjectId("592f8964d276944818f7ede4"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 8 }
{ "_id" : ObjectId("592f8964d276944818f7ede5"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 9 }

6、AND和OR綜合使用

查詢phone<5,name=MongoDB或者name=linux

db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]})
db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }

7、查詢結果排序

在MySQL中是有order by條件,可以根據desc或者asc進行升序或者降序操作,而MongoDB中是可以利用sort()方法實現排序的,例如對6中的結果處理,根據phone排序。

基本語法

db.info2.find().sort({phone:1}) #這裏phone表示根據該key排序,1表示升序,-1表示降序

db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]}).sort({phone:1})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }

8、MongoDB Skip() 方法

在前面介紹了limit(),sort(),count()等方法,接下來要介紹一個比較有趣的skip()方法,在使用limit()的時候可以顯示你要求的幾條,而skip()方法是跳過幾條。

db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]}).sort({phone:1})
{ "_id" : ObjectId("592f838dd276944818f7edb4"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 0 }
{ "_id" : ObjectId("592f8964d276944818f7eddc"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 0 }
{ "_id" : ObjectId("592f838dd276944818f7edb5"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 1 }
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }
使用skip()方法
db.info2.find({phone:{$lt:5},$or:[{name:"MongoDB"},{name:"linux"}]}).sort({phone:1}).skip(3)
{ "_id" : ObjectId("592f8964d276944818f7eddd"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 1 }
{ "_id" : ObjectId("592f838dd276944818f7edb6"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 2 }
{ "_id" : ObjectId("592f8964d276944818f7edde"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 2 }
{ "_id" : ObjectId("592f838dd276944818f7edb7"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 3 }
{ "_id" : ObjectId("592f8964d276944818f7eddf"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 3 }
{ "_id" : ObjectId("592f838dd276944818f7edb8"), "name" : "linux", "object" : "SA", "company" : "docker", "phone" : 4 }
{ "_id" : ObjectId("592f8964d276944818f7ede0"), "name" : "MongoDB", "object" : "redis", "company" : "winner", "phone" : 4 }
skip 方法有點類似於MySQL裏面的limit之間間隔情況。

這裏介紹了有關查詢的問題,在數據庫中,查詢是非常重要的一部分,所以介紹的篇幅也是比較多的,後期遇到其他問題也會繼續總結輸出。

本文出自 “堅持夢想” 博客,請務必保留此出處http://dreamlinux.blog.51cto.com/9079323/1931384

Mongodb基礎實踐(二)