MongoDB查詢方法總結

目錄

1.MongDB查詢文檔使用find()方法。

2.除了find()方法之外,還有一個findOne()方法,它只返回一個文檔。

3.查詢數據庫表中的數據條數:db.col.count();

4.常用的一些查詢eg

5.MongoDB 與 RDBMS Where 語句比較

         6.MongoDB AND 條件

         7.MongoDB OR 條件

         8.AND 和 OR 聯合使用


1.MongDB查詢文檔使用find()方法。

find()方法以非結構化的方式顯示所有文檔。

MongDB查詢數據語法格式如下:

db.collection.find(query, projection)

query可選:使用查詢操作符指定查詢條件。

projection:使用投影操作符指定返回的鍵。查詢時返回所有文檔鍵值,只需省略該參數即可(默認省略)。

如果你需要以易讀的方式讀取數據,可以使用pretty()方法,語法格式如下:

db.col.find.pretty()

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

以下實例我們查詢了集合 col 中的數據:

> db.col.find().pretty()
{
        "_id" : ObjectId("56063f17ade2f21f36b03133"),
        "title" : "MongoDB 教程",
        "description" : "MongoDB 是一個 Nosql 數據庫",
        "by" : "菜鳥教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}

2.除了find()方法之外,還有一個findOne()方法,它只返回一個文檔。

在查詢指定數據庫表的情況下我們可以使用:show collections

3.查詢數據庫表中的數據條數:db.col.count();

帶查詢條件統計數量:

db.disease.count({"age":{$gte:23,$lte:28}})

4.常用的一些查詢eg

查詢要返回的指定字段,排除不需要的字段顯示,0代表不顯示(默認是不顯示),1代表顯示。

db.diseases.find({id:"1"},{name:1,age:1,cards:1,_id:0})

下面我們查詢id類型爲1的,cards數組中qy數量爲6的會員  如果查詢qy爲3和6

db.disease.find({"cards.qy":{$in:[3,6]}},{name:1,age:1,cards:1,_id:0});

關於經常用到的分頁查詢的兩個方法limit和跳過指定條數

db.disease.find({"age",{$gt:20}}).limit(5).skip(7);

mongodb查詢數據集合根據某個字段排序sort 語法如下 1代表升序排列,-1代表降序排列

db.disease.find({"age":{$gt:20}}).sort({"age":-1});

mongodb 查詢某個字段的多個數據匹配用in

db.disease.find("age":{$in:[21,26]})

mongdb 條件篩選且某一字段求和:

db.disease.aggregate([{$match:{id:"1",age:28}},
{$group:{_id:null,sumage:{$sum:"$age"}}}
])

查詢指定條件,根據某個字段的最大最小值,平均值還有人數進行篩選。

db.disease.aggregate([{$match:{id:"1"}},{$group:{_id:null,sumage:{$min:"$age"}}}])

db.disease.aggregate([{$match:{id:"1"}},{$group:{_id:null,sumage:{$max:"$age"}}}])

db.disease.aggregate([{$match:{id:"1"}},{$group:{_id:null,sumage:{$avg:"$age"}}}])

db.disease.aggregate([{$match:{id:"1"}},{$group:{_id:null,count:{$sum:1}}}])

5.MongoDB 與 RDBMS Where 語句比較

 

操作 格式 範例 RDBMS中的類似語句
等於 {<key>:<value>} db.col.find({"by":"菜鳥教程"}).pretty() where by = '菜鳥教程'
小於 {<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

6.MongoDB AND 條件

mongdb 的find()方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開

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

7.MongoDB OR 條件

MongoDB OR 條件語句使用了關鍵字 $or,語法格式如下:

>db.col.find(     {        $or: [  	     {key1: value1}, {key2:value2}        ]     }  ).pretty()  
>db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
{       
	"_id" : ObjectId("56063f17ade2f21f36b03133"),    
	"title" : "MongoDB 教程",    
	"description" : "MongoDB 是一個 Nosql 數據庫",       
	"by" : "mongodb中文網",     
	"url" : "http://www.mongodb.org.cn",
	"tags" : [                 
		"mongodb",               
		"database",             
		"NoSQL"        
	],        
	"likes" : 100  
} 
>  

8.AND 和 OR 聯合使用

>db.col.find({"likes": {$gt:50}, $or: [{"by": "Mongodb中文網"},{"title": "MongoDB 教程"}]}).pretty()
{         
	"_id" : ObjectId("56063f17ade2f21f36b03133"),   
	"title" : "MongoDB 教程",       
	"description" : "MongoDB 是一個 Nosql 數據庫",  
	"by" : "Mongodb中文網",      
	"url" : "http://www.mongodb.org.cn",  
	"tags" : [                
		"mongodb",   
		"database",        
		"NoSQL"         
	],    
	"likes" : 100  
}  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章