經過前幾天的學習之路,今天終於到了重頭戲了。那就是文檔查詢操作。話不多說哈,直接看下語法:
db.collection.find(query, projection)
- query :可選,使用查詢操作符指定查詢條件
- projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。
這里還有一種讀取的方式,是格式化顯示數據的,看一下語法:
>db.luyaran.find().pretty()
好啦,大家來看一下實例,比較容易理解:
> db.luyaran.find().pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
看到區別了么,和昨天的查詢相比較的話,這種方式的查詢展示數據格式比較清晰,還有就是findOne()這種查詢呢,可以只展示我們查詢出來的第一條數據。接下來呢,就輪到條件查詢了,首先我們要說的就是比較查詢,先來看一下和mysql中的比較符號的區別:
操作 | 格式 | 范例 | RDBMS中的類似語句 |
---|---|---|---|
等於 | {<key>:<value> } |
db.col.find({"by":"luyaran"}).pretty() |
where by = 'luyaran' |
小於 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小於或等於 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大於 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大於或等於 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等於 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
還有呢就是我們的and查詢了,MongoDB的find()查詢可以傳入多個鍵值,以逗號隔開就是我們平常用的and多條件查詢了。大家來看一下語法:
>db.luyaran.find({key1:value1, key2:value2}).pretty()
下面的就是實例了:
> db.luyaran.find({"by":"luyaran", "title":"MongoDB 教程"}).pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } //類似於 where by = 'luyaran' and title = 'MongoDB 教程'
再來就是我們的or查詢嘍,看一下語法:
>db.luyaran.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
看一下實例感受一下:
>db.luyaran.find({$or:[{"by":"luyaran"},{"title": "MongoDB 教程"}]}).pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >
接下來看一下or和and的組合使用:
>db.luyaran.find({"likes": {$gt:50}, $or: [{"by": "luyaran"},{"title": "MongoDB 教程"}]}).pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
到這里呢,查詢就差不多了,接下來繼續進入今天的重頭戲條件操作符的使用。不做過多的贅述了,看實例哈:
首先,我們先清除luyaran這個集合中的所有數據:
db.luyaran.remove({})
然后呢,我們插入以下數據:
>db.luyaran.insert({ title: 'PHP 教程', description: 'PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。', by: 'luyaran', url: 'http://www.luyaran.com', tags: ['php'], likes: 200 })
>db.luyaran.insert({title: 'Java 教程', description: 'Java 是由Sun Microsystems公司於1995年5月推出的高級程序設計語言。', by: 'luyaran', url: 'http://www.luyaran.com', tags: ['java'], likes: 150 })
>db.luyaran.insert({title: 'MongoDB 教程', description: 'MongoDB 是一個 Nosql 數據庫', by: 'luyaran', url: 'http://www.luyaran.com', tags: ['mongodb'], likes: 100 })
接下來我們使用find來查看一下當前集合中所含有的數據:
> db.luyaran.find() { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司於1995年5月推出的高級程序設計語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb" ], "likes" : 100 }
然后就開始查詢嘍,先來一個likes大於100的:
db.luyaran.find({"likes" : {$gt : 100}}) //類似於select * from luyaran where likes > 100
輸出的結果集為:
> db.luyaran.find({"likes" : {$gt : 100}}) { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司於1995年5月推出的高級程序設計語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "java" ], "likes" : 150 } >
再來一個likes大於等於100的:
db.luyaran.find({likes : {$gte : 100}}) //類似於select * from luyaran where likes >= 100
輸出的結果集為:
> db.luyaran.find({likes : {$gte : 100}}) { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "php" ], "likes" : 200 } { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司於1995年5月推出的高級程序設計語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb" ], "likes" : 100 } >
然后呢,再來一個小於150的:
db.luyaran.find({likes : {$lt : 150}}) //類似於select * from luyaran where likes < 150
輸出的結果集為:
> db.luyaran.find({likes : {$lt : 150}}) { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb" ], "likes" : 100 }
還有就是小於等於150的:
db.luyaran.find({likes : {$lte : 150}}) //類似於select * from luyaran where likes <= 150
輸出的結果集為:
> db.luyaran.find({likes : {$lte : 150}}) { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司於1995年5月推出的高級程序設計語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "java" ], "likes" : 150 } { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "mongodb" ], "likes" : 100 }
最后再來一個區間的哈,大於100小於200的:
db.luyaran.find({likes : {$lt :200, $gt : 100}}) //類似於select * from luyaran where likes > 100 and likes <200
輸出的結果集為:
> db.luyaran.find({likes : {$lt :200, $gt : 100}}) { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司於1995年5月推出的高級程序設計語言。", "by" : "luyaran", "url" : "http://www.luyaran.com", "tags" : [ "java" ], "likes" : 150 } >
好啦,今天的分享到這里就差不多結束了。后續的還有好多查詢方式,待我融會貫通后,定會記錄下來與諸君分享。
另外,再次聲明哈,這是本人學習筆記,各位看官勿噴哈。
如果覺得不錯的,歡迎諸位點贊支持哈。。。
原文鏈接:https://blog.csdn.net/luyaran/article/details/79711560