简体   繁体   中英

Querying in mongoose and filtering by dates

I have this levels in mongoose documents 在此处输入图片说明

I'm trying to make a filter to populate the geometry for the locations that are in the range of some date.

I try something like this:

.populate('geometries', null, { 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }})
.exec(function(err, item) {
//some code
}

And like this:

 .populate('geometries')
 .where({ 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }}*/)
 .exec(function(err, item) {
    //some code
    }

With these query I can not access the timeStamp to compare, and the result is null or undefined.

EDIT 1:

The variables, startDate and endDate comes in the url from angulars controller, they are defined like this:

            var deductDate = new Date(endDate);
            var startDate = deductDate.setDate(deductDate.getDate()-1);

            Item.currentDay($stateParams.epc, url, {
                groupBy: '1d',
                endDate: moment(endDate).format(),
                startDate: moment(startDate).format('YYYY-MM-DD') + "T23:59:59"
            });

And in the API the GET route that handles that is:

 handler: function(request, reply) {
  var startDate = request.query.startDate;
  var endDate = request.query.endDate;
  Item.findById(request.params.id)
    .populate('geometries', null, { 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }})
    .exec(function(err, item) {
      if (err) {
        reply(err);
      } else {
        reply(item);
      }
    });
}

Try to do this:

.populate({
  path: 'geometries',
  match: { 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate    }},
}).exec()

Extracted from mongoose documentation about Query conditions and other options ( http://mongoosejs.com/docs/populate.html )

Do this:

  var startDate = new Date(request.query.startDate);
  var endDate = new Date(request.query.endDate);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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