मेरे पास एक स्कीमा परिभाषित है:
const mongoose = require('mongoose');
const urlSchema = new mongoose.Schema({
longURL : {
type : String,
required : true,
},
shortUrl: {
type : String
},
clicks : {
type : Number,
default : 0
},
date: {type: Date, default: new Date()},
year : {
type : Number
}
})
module.exports = mongoose.model('Url',urlSchema)
जब मैं नीचे दिए गए कोड के लिए वर्ष के लिए $मिलान में डिफ़ॉल्ट मान देता हूं, तो मुझे वांछित आउटपुट मिल रहा है।
let result = await Url.aggregate(
[
{$match:{"year":2020}},
{
$project:
{
month: { $month: "$date" }
}
},
{
$group : {
_id : "$month",
count : {$sum : 1}
}
}
]
)
output :
[
{
"_id": 1, // 1 - represent Jan
"count": 8
},
{
"_id: : 7, // 7 - represent Jul
"count: : 5
}
]
लेकिन अगर मैं गतिशील मान पास करता हूं, तो मुझे आउटपुट के रूप में खाली सरणी मिल रही है
let year = 2020;
let result = await Url.aggregate(
[
{$match:{"year":year}},
{
$project:
{
month: { $month: "$date" }
}
},
{
$group : {
_id : "$month",
count : {$sum : 1}
}
}
]
)
output:
[]
बस नेवले के साथ काम करना शुरू कर दिया और मुझे कोई संदर्भ नहीं मिला कि मुझे इस तरह का अजीब परिणाम क्यों मिल रहा है? मुझे साल और महीने के आधार पर गिनती मूल्य चाहिए। क्या कोई इससे मेरी मदद कर सकता है?
अग्रिम में मदद के लिए धन्यवाद!
1 उत्तर
मुझे लगता है कि समस्या पूर्णांक/स्ट्रिंग भ्रम के साथ है।
ये कोशिश करें:
{$match:{"year": parseInt(year) }},
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।