本篇主要从模糊查询,类型查询,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 排序。
本文介绍了MongoDB的基础查询操作,包括使用正则表达式进行模糊查询,利用$type进行类型查询,结合limit和skip实现分页,以及运用sort命令进行升序和降序排序。重点强调了模糊查询对字符串类型的限制和排序的多种方式。
2万+

被折叠的 条评论
为什么被折叠?



