Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Querying with mongoose and dates

I'm trying to find out how to do an specific query with mongoose. I have in mongodb something like this:

{ "_id" : 1, "modificationDate" : ISODate("2013-06-26T18:57:30.012Z") } { "_id" : 2, "modificationDate" : ISODate("2013-06-26T18:57:35.012Z") } 

I want to obtain all the objects where the difference between the actual date and modificationDate is greater than 5 days.

like image 822
dysphoria Avatar asked Jul 09 '13 17:07

dysphoria


People also ask

What is date format in Mongoose?

you have to create a Date object first: var date = new Date(dateStr); // dateStr you get from mongodb var d = date. getDate(); var m = date. getMonth()+1; // ... Follow this answer to receive notifications.

How do I declare a Date in MongoDB schema?

Here's how you declare a path of type Date with a Mongoose schema: const mongoose = require('mongoose'); const userSchema = new mongoose. Schema({ name: String, // `lastActiveAt` is a date lastActiveAt: Date }); const User = mongoose. model('User', userSchema);

Can I use MongoDB query in Mongoose?

You can stream query results from MongoDB. You need to call the Query#cursor() function to return an instance of QueryCursor. Iterating through a Mongoose query using async iterators also creates a cursor.


2 Answers

Calculate the 5-days-old cutoff time and then perform a find using the $lt operator and the calculated cutoff:

var cutoff = new Date(); cutoff.setDate(cutoff.getDate()-5); MyModel.find({modificationDate: {$lt: cutoff}}, function (err, docs) { ... }); 
like image 109
JohnnyHK Avatar answered Oct 19 '22 03:10

JohnnyHK


If you need to query between two dates you can query with $gte = greater than equals and $lte = lesser than equals in date format "YYYY-MM-DD"

const results = await MyModel.find(   {     date: {       $gte: "2021-01-20",       $lte: "2021-02-15",     }   } ) 

This example will query MyModel between January 20th 2021 to February 15th 2021.

Reference: https://mongoosejs.com/docs/tutorials/dates.html

like image 24
Emisael Carrera Avatar answered Oct 19 '22 03:10

Emisael Carrera