Mongodb 常用的查詢方法
隨著NoSql的越來越火,Mongodb 作為NoS ql的代表,用的人也越來越多。學習Mongodb 有一段時間了,專案中使用還行,但是在使用remongo這個工具是每次書寫查詢語言還是感覺很不習慣。所以總結了下Mongodb 中常用的查詢方法:
1,大於,小於,大於等於,小於等於
$gt 大於 >
$lt 小於 <
$gte 大於或等於 >=
$lte 小於等於 <=
示例
db.collection.find({age:{$gt:18}}); //年齡大於18歲,不包含18歲
SQL:SELECT * FROM Collection WHERE age>18
db.collection.find({age:{$lt:25}}); //年齡小於25歲,不包含25歲
SQL:SELECT * FROM Collection WHERE age<25
db.collection.find({age:{$gte:18}});//年齡大於等於18歲的,包含18歲
SQL:SELECT * FROM Collection WHERE age >=18
db.collection.find({age:{$lte:25}});//年齡小於等於25歲的,包含25歲
SQL:SELECT * FROM Collection WHERE age<=25
也可以將兩個條件合併,如下
db.collection.find({age:{$gt:18,$lt:25}}) ;//18<age<25;
2,不等於
$ne 不等於 noe equals
db.collection.find({age:{$ne:18}}) ;//年齡不等於18
3,in,not in
$in,$nin
語法
db.collection.find({field:{$in:array}});
db.collection.find({field:{$nin:array}});
示例:
db.collection.find({id:{$in:[1,2,3,4]}})
db.collection.find({id:{$nin:[1,2,3,4]}});
4,$exists 驗證一個元素是否存在
這個語法有點繞
db.collection.find({title:{$exists:true}}); //如果記錄中有包含title屬性的全部返回
db.collection.find({title:{$exists:false}}); //如果記錄中有包含title屬性的全部不返回,不包含title屬性的全部返回
5,正規表示式
mongo支援正規表示式,如:
db.customers.find( { name : /acme.*corp/i } ); // 後面的i的意思是區分大小寫
支援正規表示式查詢讓mongDb具有相當強大的查詢功能,不過同時需要開發者比較瞭解正規表示式
6 查詢資料內的值
下面的查詢是查詢colors內red的記錄,如果colors元素是一個資料,資料庫將遍歷這個陣列的元素來查詢。db.things.find( { colors : "red" } );
7 $elemMatch
如果物件有一個元素是陣列,那麼$elemMatch可以匹配內陣列內的元素:
> t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } )
{ "_id" : ObjectId("4b5783300334000000000aa9"),
"x" : [ { "a" : 1, "b" : 3 }, 7, { "b" : 99 }, { "a" : 11 } ]
}$elemMatch : { a : 1, b : { $gt : 1 } } 所有的條件都要匹配上才行。
注意,上面的語句和下面是不一樣的。
> t.find( { "x.a" : 1, "x.b" : { $gt : 1 } } )
$elemMatch是匹配{ "a" : 1, "b" : 3 },而後面一句是匹配{ "b" : 99 }, { "a" : 11 }
8 查詢嵌入物件的值
db.postings.find( { "author.name" : "joe" } );
注意用法是author.name,用一個點就行了。更詳細的可以看這個連結: dot notation
舉個例子:
> db.blog.save({ title : "My First Post", author: {name : "Jane", id : 1}})
如果我們要查詢 authors name 是Jane的, 我們可以這樣:
> db.blog.findOne({"author.name" : "Jane"})
如果不用點,那就需要用下面這句才能匹配:
db.blog.findOne({"author" : {"name" : "Jane", "id" : 1}})
下面這句:
db.blog.findOne({"author" : {"name" : "Jane"}})
是不能匹配的,因為mongodb對於子物件,他是精確匹配。
9 元操作符 $not 取反
如:
db.customers.find( { name : { $not : /acme.*corp/i } } );db.things.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );
後續專案中的查詢方法再慢慢添上
相關文章
- MongoDB 常用查詢語法MongoDB
- MongoDB分頁查詢的方法及效能MongoDB
- MongoDB 分頁查詢的方法及效能MongoDB
- mongodb查詢MongoDB
- MongoDB - 聚合查詢MongoDB
- MongoDB的排除查詢$ne缺陷MongoDB
- Mongodb高階查詢MongoDB
- MongoDB查詢總結MongoDB
- mongodb慢查詢分析MongoDB
- ❖ MongoDB 高階查詢MongoDB
- MongoDB查詢條件MongoDB
- MongoDB條件查詢MongoDB
- Laravel使用MongoDB複雜的查詢LaravelMongoDB
- MongoDB查詢內嵌文件MongoDB
- MongoDB慢查詢與索引MongoDB索引
- Mongodb 關聯表查詢MongoDB
- MongoDB日期型別查詢MongoDB型別
- oracle常用查詢Oracle
- MongoDB隨機查詢返回一條或N條記錄的方法MongoDB隨機
- Python中查詢字串某個字元最常用的方法!Python字串字元
- MongoDB(12)- 查詢嵌入文件的陣列MongoDB陣列
- MongoDB範圍查詢的索引優化MongoDB索引優化
- MongoDB 如何支援類 SQL 查詢MongoDBSQL
- mongodb條件查詢不等於MongoDB
- MongoDB 操作文件 查詢文件MongoDB
- MongoDB之資料查詢操作MongoDB
- MongoDB高階查詢詳細MongoDB
- Oracle常用的查詢語句Oracle
- sql常用查詢命令SQL
- Oracle DBA常用查詢Oracle
- 查詢索引 常用SQL索引SQL
- oracle常用SQL查詢OracleSQL
- 常用SQL查詢1SQL
- 常用SEO查詢工具
- 常用查詢網址
- ORACLE使用者常用資料字典的查詢使用方法Oracle
- MongoDB(13)- 查詢操作返回指定的欄位MongoDB
- Mongodb內嵌陣列的完全匹配查詢MongoDB陣列