本篇主要从模糊查询,类型查询,Limit 行数以及排序方面进行开展。
1 模糊查询
在mongo 中模糊查询不同于SQL 中的关键字,其他的方式mongo 通过$ge 等的方式进行匹配,模糊查询比较特殊,采用的是正则匹配的方式。通过 /keyword/ 代表 SQL 中like '%keyword%', /^keyword/ 代表 like 'keyword%', /keyword$/ 代表like '%keyword'. 目前测试好像只对字符串类型有效。
db.col.find({title:/学生/})
db.col.find({title:/^学生/})
db.col.find({title:/学生$/})
2 类型查询
类型查询是通过关键词 $type 进行匹配, $type 可以按类型值或者数字值筛选当前集合中的数据。
常用语法
db.col.find({"name" : {$type : 2}})
或
db.col.find({"name" : {$type : 'string'}})
数据类型参考表格:
Type | Number | Alias | Notes |
---|---|---|---|
Double | 1 | “double” | |
String | 2 | “string” | |
Object | 3 | “object” | |
Array | 4 | “array” | |
Binary data | 5 | “binData” | |
Undefined | 6 | “undefined” | Deprecated. |
ObjectId | 7 | “objectId” | |
Boolean | 8 | “bool” | |
Date | 9 | “date” | |
Null | 10 | “null” | |
Regular Expression | 11 | “regex” | |
DBPointer | 12 | “dbPointer” | Deprecated. |
JavaScript | 13 | “javascript” | |
Symbol | 14 | “symbol” | Deprecated. |
JavaScript (with scope) | 15 | “javascriptWithScope” | |
32-bit integer | 16 | “int” | |
Timestamp | 17 | “timestamp” | |
64-bit integer | 18 | “long” | |
Decimal128 | 19 | “decimal” | New in version 3.4. |
Min key | -1 | “minKey” | |
Max key | 127 | “maxKey” |
3 limit 和 skip
SQL 中 过滤限制行数返回通过 limit n,m 的方式进行, 在mongo 中需要搭配使用 limit 和skip 命令进行。skip 默认从0开始。
db.demo.find({}).limit(2).skip(7); 类似于 SQL limit 7,2
通过 $natural 关键字按照插入顺序进行排序。
db.demo.find({}).sort({ $natural:-1 }) $natural : 1 默认插入顺序, -1 按插入顺序倒排。
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
4 sort 排序
SQL 中通过order by 进行排序, asc 升序,desc 降序,而mongo 中 通过 sort 命令进行排序,参数 1 代表升序,-1 代表降序。
db.COLLECTION_NAME.find().sort({KEY:1})
按关键字ascill 码排序
按插入顺序倒排
总结, 本篇主要就日常的模糊查询,分页查询,排序进行了学习,需要注意的一是模糊查询采用正则匹配,针对字符串类型数据,二是排序时可以通过自然查询的方式进行顺序和倒序排列,以及关键字的ascill 排序。