अपनी क्वेरी के लिए वास्तविक दिनांक वस्तु का उपयोग करें, न कि स्ट्रिंग जैसा कि आप वर्तमान में कर रहे हैं। क्योंकि मोंगो तारीखों को ISODateमें लपेटता है। कोड>
सहायक और अंतर्निहित बीएसओएन (मोंगो द्वारा मूल रूप से उपयोग किए जाने वाले स्टोरेज डेटा प्रारूप) में एक समर्पित दिनांक प्रकार यूटीसी डेटाटाइम है जो 64 बिट (इसलिए, 8 बाइट) हस्ताक्षरित पूर्णांक है जो यूनिक्स समय युग के बाद से मिलीसेकंड को दर्शाता है, आपकी क्वेरी कुछ भी वापस नहीं करती है यह आईएसओ स्वरूपित स्ट्रिंग के साथ मोंगो में दिनांक फ़ील्ड की तुलना करेगा।
तो, toISOString()
को छोड़ दें रूपांतरण और दिनांक वस्तु का उपयोग करें:
if (data.date) {
const date = new Date();
const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
date.setDate(date.getDate() - dateRange);
query.start = { $lte: date };
console.log(query);
}
Call.find(query, function (error, docs) {
if (error) callback(error, null);
callback(null, docs);
});
बेहतर अभी तक, आप momentjs
का उपयोग कर सकते हैं प्लगइन जिसमें एक बहुत ही सहज और आसान डेटाटाइम मैनिपुलेशन एपीआई है। एक तरीका जिसका आप उपयोग कर सकते हैं वह है subtract()
दिनांक वस्तु प्राप्त करने के लिए कार्य करें n
दिनों पहले की संख्या:
if (data.date) {
const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
const date = moment().subtract(dateRange, "days");
query.start = { $lte: date };
console.log(query);
}
Call.find(query, function (error, docs) {
if (error) callback(error, null);
callback(null, docs);
});