मेरे पास एक स्कीमा परिभाषित है:

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
Preethi 20 जुलाई 2021, 14:04

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि समस्या पूर्णांक/स्ट्रिंग भ्रम के साथ है।

ये कोशिश करें:

{$match:{"year": parseInt(year) }},
0
Murat Colyaran 20 जुलाई 2021, 16:33