繁体   English   中英

Mongoose/MongoDB 正则表达式使用变量查找查询

[英]Mongoose/MongoDB regex find query using variable

我正在尝试使用基于变量的正则表达式在 mongoDB 中执行查找查询(使用带有 nodejs 和 express 的猫鼬框架)。 我部分能够使用硬编码到代码中的静态字符串正确查询,但我需要使用值不断变化的变量来执行查询。

该查询使用三个字段(作者、日期和更新日期),并且应该遍历方案中的所有文档,并找到“日期”或“更新日期”与变量 currentDate 类似的所有文档(始终格式为 YYYY-mm-dd)哪里作者是作者姓名。

主要问题是 mongoDB 以 ISO 格式存储日期。 在执行时,字符串变量 (currentDate (YYYY-mm-dd)) 被格式化为 ISO,这导致它只“命中”时间为 00:00.000Z 的文档,因为 ISO 格式 2015-09-17 为 2015-09-17 00 :00:00.000Z(不考虑时区)。

查询:

var currentDate = yyyy-mm-dd;

Scheme.find({$and:[{'local.author': author},
   {$or: [{'local.date': new RegExp(currentDate)}, 
          {'local.updated_date':new RegExp(currentDate)}]}]}

我也尝试过 $gte 和 $lte 变量(其中 $gte = 今天的日期和 &lte = 明天的日期(00:00))但我无法让它工作,我遇到了试图执行正则表达式的墙.

我希望有一位出色的正则表达式专家可以提供帮助,谢谢! :)

我想通了它没有所有的复杂性。

var tomorrow = new Date();
var today = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(0,0,0,0);
today.setHours(0,0,0,0);

Scheme.find({$and:[{'local.author': author},{$or: [{'local.date': { $gt: today, $lt: tomorrow } },{'local.updated_date':{ $gte: today, $lt: tomorrow }}]}]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM