Reputation: 503
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);
}
});
}
Upvotes: 1
Views: 10418
Reputation: 664
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)
Upvotes: 1
Reputation: 11677
Do this:
var startDate = new Date(request.query.startDate);
var endDate = new Date(request.query.endDate);
Upvotes: 0