目錄
2.除了find()方法之外,還有一個findOne()方法,它只返回一個文檔。
3.查詢數據庫表中的數據條數:db.col.count();
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
}