【问题标题】:MONGOOSE find a document using a string (LIKE %SQL)MONGOOSE 使用字符串查找文档 (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 获取所有文件

无论秒数,只需验证日期、小时和分钟即可。

【问题讨论】:

  • 我看过这篇文章,但不适合我!可能是日期和时间?
  • 不,没关系。您确定将日期作为字符串存储在 mongodb 中吗?
  • 日期以 Date 类型存储!
  • 那是你的问题。将它们更改为字符串以使正则表达式起作用。

标签: node.js mongodb mongoose mongodb-query mongoose-schema


【解决方案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)
  • 使用日期范围怎么样? (更新了我的答案以反映这一点)
猜你喜欢
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多