因爲以前只是使用 MongoDB 進行存儲日誌,沒有作過度析,只作過經過 api 進行查詢操做。java
如今有場景須要使用鏈接工具直接查詢分析。因此在此記錄一下使用到的查詢方法。正則表達式
MongoDB 查詢文檔使用 find() 方法。api
find() 方法以非結構化的方式來顯示全部文檔。工具
MongoDB 查詢數據的語法格式以下:spa
db.collection.find(query, projection)
若是你須要以易讀的方式來讀取數據,可使用 pretty() 方法,語法格式以下:日誌
>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示全部文檔。code
除了 find() 方法以外,還有一個 findOne() 方法,它只返回一個文檔。對象
若是你熟悉常規的 SQL 數據,經過下表能夠更好的理解 MongoDB 的條件語句查詢:blog
操做 | 格式 | 範例 | 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 |
MongoDB AND 條件教程
MongoDB 的 find() 方法能夠傳入多個鍵(key),每一個鍵(key)以逗號隔開,即常規 SQL 的 AND 條件。
語法格式以下:
>db.col.find({key1:value1, key2:value2}).pretty()
存儲結構以下:
// MongoDB查詢條件可使用正則表達式,從而實現模糊查詢的功能。模糊查詢可使用$regex操做符或直接使用正則表達式對象
db.getCollection('mobileOfficeLog').find({"requestUrl":"/customer/login/authCode"});
db.getCollection('mobileOfficeLog').find({"requestUrl":{$regex: '/login/authCode', $options:'i'}});
db.getCollection('mobileOfficeLog').find({"requestUrl":{$regex:/\/login\/authCode.*/}});
db.getCollection('mobileOfficeLog').find({"requestUrl":{$regex:/\/login\/authCode.*/i}});
/**
獲取時間:
1. new Date(1559101984000)
2. new Date(2019,6,14)
3. ISODate("2019-06-14T00:00:00Z")
*/
//db.getCollection('mobileOfficeLog').find({'requestUrl':{$regex: '/login/authCode'}, 'createDate':{$gte:new Date(1559101984000)}})
db.getCollection('mobileOfficeLog').find({'requestUrl':{$regex: 'login'}, 'createDate':{$gte:ISODate('2019-06-13T00:00:00Z')}})
db.getCollection('mobileOfficeLog').find({"requestUrl":{$regex: '/login/authCode'}}).count()
db.getCollection('mobileOfficeLog').aggregate([{$match:{'requestUrl' : {$regex: 'login'}, 'createDate':{$gte:ISODate('2019-06-13T00:00:00Z')}}},{$group:{_id:'$operateUser'}}])