MongoDB入門---文檔查詢操作之條件查詢&and查詢&or查詢


    經過前幾天的學習之路,今天終於到了重頭戲了。那就是文檔查詢操作。話不多說哈,直接看下語法:

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM