![](/img/trans.png)
[英]Find a string in mongodb with a regex expression and using a variable
[英]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 = 今天的日期和 <e = 明天的日期(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.