Mongodb 如何向“当前日期”字段添加天数,以便能够比较日期范围

Mongodb 如何向“当前日期”字段添加天数,以便能够比较日期范围,mongodb,Mongodb,我需要在MongoDB中执行以下MySql方法: SELECT * FROM table T WHERE DATE_ADD(T.createdAt, INTERVAL 2 DAY) > someDate; 我在考虑聚合、表达式等,但我找不到一种方法来实现这一点 提前谢谢 您可以在此处使用$add: db.yourCollection.find({ "createdAt": { $gt: { $add: [ "$someDate", -100

我需要在MongoDB中执行以下MySql方法:

SELECT * FROM table T WHERE DATE_ADD(T.createdAt, INTERVAL 2 DAY) > someDate;
我在考虑聚合、表达式等,但我找不到一种方法来实现这一点


提前谢谢

您可以在此处使用
$add

db.yourCollection.find({
    "createdAt": { $gt: { $add: [ "$someDate", -1000 * 3600 * 24 * 3 ] } }
});
以上假设两个字段
createdAt
someDate
都是ISO时间戳。请注意,我实际上已将您的查询重新表述如下,因此
createdAt
会自动出现在不等式的左侧:

选择*
从你的桌子上
其中createdAt>someDate-间隔2天;

当您必须使用日期/时间值时,我建议使用s库。这是一个:

db.collection.find({
   createdAt: { $gte: { moment().subtract(2, 'days').toDate() } } 
})

我认为不需要示例文档,因为我的问题是如何将MySQL查询转换为Mongodb查询。基本上,查找字段
createdAt+days
大于
somedate
的文档。如果不想在查询中执行此操作,可以在客户端中从
somedate
减去2天。所以只需在查询中匹配大于条件即可。添加负值可能会让人困惑(尽管对于软件开发人员来说应该不会有问题)。您也可以使用
$subtract()
这在Mongo shell中也可以吗?@TimBiegeleisen是的,如果您之前运行
load(“\moment.js”)
。感谢您花点时间回复我的评论;刚刚学到了一些新东西。