MONGOOSE 使用字符串查找文档 (LIKE %SQL)
Posted
技术标签:
【中文标题】MONGOOSE 使用字符串查找文档 (LIKE %SQL)【英文标题】:MONGOOSE find a document using a string (LIKE %SQL) 【发布时间】:2018-06-14 08:39:24 【问题描述】:我想使用集合中包含的日期字段查找文档
//Document Exemple: MODEL : MY_EVENT
event_time_produce: '2018-01-03T11:00:00.201Z',
event_name : 'show'
我想查找所有以'2018-01-03T11:00:'开头的文档
我想忽略 Millesecobde & ISOtype ..etc 的部分
就像在 SQL 中一样:
SELECT * from MY_EVENT where event_time_produce LIKE '2018-01-03T11:00:%'
我试过了,但没用(猫鼬)
MY_EVENT.find(event_time_produce :
$regex: new RegExp('^2018-01-03T11:00:00.*$')
)
.exec(....)
简单的搜索工作:
MY_EVENT.find(event_time_produce : '2018-01-03T11:00:00.201Z')
.exec(....)
但我想从 2018 年 1 月 3 日 11:00:XX 获取所有文件
无论秒数,只需验证日期、小时和分钟即可。
【问题讨论】:
Mongoose.js: Find user by username LIKE value的可能重复 我看过这篇文章,但不适合我!可能是日期和时间? 不,没关系。您确定将日期作为字符串存储在 mongodb 中吗? 日期以 Date 类型存储! 那是你的问题。将它们更改为字符串以使正则表达式起作用。 【参考方案1】:这不是你的正则表达式的问题吗?
在您的 SQL 示例中,您有 2018-01-03T11:00:%
在 mongo 上您有 ^2018-01-03T11:00:00.*$
(11:00:
之后的另外两个零)
更新:
如果您在实际文档中的数据是 ISODate 而不是常规字符串,最好使用如下范围:
event_time_produce:$gte:ISODate("2018-01-03T11:00:00.000+0000"),$lte:ISODate("2018-01-03T11:00:59.999+0000")
【讨论】:
我在 Mongoose 中搜索了一个函数,就像 SQL 中的 DATEPART() 函数! SELECT * FROM record WHERE (DATEPART(yy, register_date) = 2009 AND DATEPART(mm, register_date) = 10 AND DATEPART(dd, register_date) = 10) 使用日期范围怎么样? (更新了我的答案以反映这一点)以上是关于MONGOOSE 使用字符串查找文档 (LIKE %SQL)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Mongoose 查找子文档字段部分匹配给定条件的文档
使用 Mongoose 查找子文档字段部分匹配给定条件的文档