mongoDB, 利用正则筛选数据
2022/4/9 19:21:54
本文主要是介绍mongoDB, 利用正则筛选数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
node代码示例如下:
async getAll({ propertyId, name, reportType, fileFormat, expiredTime, groupId, category }) { const { helper } = this.ctx; let condition = {}; condition = propertyId ? Object.assign(condition, { propertyId }) : condition; condition = name ? Object.assign(condition, { name: { $regex: new RegExp(helper.escapeSpecialCharacter(name), 'i') } }) : condition; // name是从外部(如页面传入的,当作正则来处理,需对正则特殊字符过滤) condition = reportType ? Object.assign(condition, { reportType }) : condition; condition = fileFormat ? Object.assign(condition, { fileFormat }) : condition; condition = groupId ? Object.assign(condition, { groupId }) : condition; condition = category ? Object.assign(condition, { category }) : condition; if (expiredTime) { condition = { $or: [ { $and: [ { createdAt: { $lt: moment.utc().subtract(45, 'days').format('YYYY-MM-DDThh:mm:ss.SSSZ') } }, { lastDownloadTime: { $gt: moment.utc().format('YYYY-MM-DDThh:mm:ss.SSS[Z]') } } ] }, { $and: [ { lastDownloadTime: { $lt: moment.utc().format('YYYY-MM-DDThh:mm:ss.SSS[Z]') } }, { lastDownloadTime: { $lt: moment.utc().subtract(45, 'days').format('YYYY-MM-DDThh:mm:ss.SSS[Z]') } }, ] } ] }; } condition = Object.assign(condition); const allReports = await ReportModal.find(condition).sort({ updatedAt: -1 }); return allReports; }
正则转义特殊字符方法:
const escapeSpecialCharacter = (str) => { const reg = /[\-\/\{\}\*\+\?\.\\\^\$\|\(\)]/g; return str.replace(reg, '\\$&'); };
正则中需转义特殊字符如下:
特别字符 |
说明 |
$ |
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 |
( ) |
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。 |
* |
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 |
+ |
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 |
. |
匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 |
[ ] |
标记一个中括号表达式的开始。要匹配 [,请使用 \[。 |
? |
匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 |
\ |
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。 |
^ |
匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 |
{ } |
标记限定符表达式的开始。要匹配 {,请使用 \{。 |
| |
指明两项之间的一个选择。要匹配 |,请使用 \|。 |
所以是
如下:
这篇关于mongoDB, 利用正则筛选数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享