通过匹配MongoDB中的日期来查询嵌入式文档

时间:2014-12-10 23:26:23

标签: regex mongodb mime

我有一个包含电子邮件的数据库,我想使用regex运算符搜索特定日期,并返回该日期发送的所有电子邮件。到目前为止我已经尝试了这个但它没有返回任何东西。我是正则表达式的新手,我不确定我是否正确查询日期。

db.messages.find({'headers.Date' : $regex : '2001-07-06'}})

以下示例成功返回了从指定电子邮件地址发送的所有电子邮件。

db.messages.find({'headers.From' : { $regex : 'reservations@merriotts.com' } });

电子邮件包含以下信息:

headers { content transfer encoding, content type, date, from, message id, mime version, subject, to }

1 个答案:

答案 0 :(得分:2)

你不需要在这里使用正则表达式,像这样简单的东西应该有效:

db.posts.find({"headers.Date": new Date(2001, 06, 06) })

如果您在数据库中保存的日期没有时间(只是日,月,年)

,这应该有效

现在,如果您使用新的Date()保存日期,其中也包含时间组件,那么您需要创建一个日期范围,其中包含当天的所有时刻:

db.posts.find( //query for all moments/time of a specific date
  {"headers.Date": {"$gte": new Date(2001, 6, 6), "$lt": new Date(2001, 6, 7)}})

注意 - 日期的API是日期(YYYY,MM,DD), 计算的是'月'从' 0' 开始计算' date'从' 1'开始。