日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Mongodb基础实践(二)

發布時間:2025/5/22 298 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb基础实践(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 在前面的文章里面主要介紹了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?equal1、查詢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之間間隔情況。

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

轉載于:https://blog.51cto.com/dreamlinux/1931384

總結

以上是生活随笔為你收集整理的Mongodb基础实践(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。