这是我的查询 -
var Query = Offer
.where('isDeleted').equals(false)
.populate('country')
.populate('state')
.populate('city')
.populate('store')
.populate("createdBy")
.populate("main_cat")
.populate("grab_by")
.populate("merchant_id")
.sort('store_name');
if (typeof querydata.country != 'undefined' && querydata.country !== '') {
Query.where('country').in(querydata.country)
}
if (querydata.state.length > 0) {
querydata.state = querydata.state.split(",");
Query.where('state').in(querydata.state);
}
if (querydata.city.length > 0) {
querydata.city = querydata.city.split(",");
Query.where('city').in(querydata.city);
}
//here i am trying to get data from start to end date
if ((req.query.start_date !== '' && typeof req.query.start_date !== 'undefined') && (req.query.end_date !== '' && typeof req.query.end_date !== 'undefined')) {
var startdate = new Date(req.query.start_date);
var enddate = new Date(req.query.end_date);
//(startdate);
enddate.setDate(enddate.getDate() + 1);
Query.where(('createdOn').split('T')[0]).gte(startdate).lte(enddate);
}
在最后一个 if else 条件中,我正在尝试在开始日期和结束日期之间进行尝试。请建议我应该如何编写相同的查询。我应该使用 momentJS 来做同样的事情吗? 此代码的主要目的是获取用户将下载的 CSV 格式的日期之间的数据。
最佳答案
您可以使用$gte
和 $lte
运算符来过滤某个日期范围内的数据。
在您的情况下,要在 Offer
集合中搜索,查询将是:
db.Offer.find({createdOn: {$gte: ISODate('START_DATE'),$lte: ISODate('END_DATE')}})
当您使用 MongoDB Compass 时,只需将以下内容放入 filter
过滤字段中:(在“架构”选项卡中)
{createdOn: {$gte: ISODate('START_DATE'),$lte: ISODate('END_DATE')}}
关于javascript - 如何从 mongoDB 获取特定日期之间的数据(日期在我们的文档中存储为createdOn)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077951/