मोंगोडब में बहु समूह का रास्ता है? मेरे पास दस्तावेज़ है और मैं उससे पूछना चाहता हूँ

[ { _id: '1615658138236', englishName: 'सैमसंग स्मार्ट टीवी 50', स्क्रीन_रेसुलेशन: '4K', स्क्रीन_साइज: '50'}, { _id: '1615750981674', englishName: 'lg tv 55 led uhd', screen_resulation: ' UHD', स्क्रीन_साइज़: '55' }, { _id: '1615791834538', englishName: 'सैमसंग स्मार्ट 55 इंच क्रिस्टल 4k', स्क्रीन_रेसुलेशन: '4K', स्क्रीन_साइज़: '55'} ]

उदाहरण के लिए मेरे पास 2 अज्ञात फ़ील्ड हैं जिन्हें मैं उन्हें प्राप्त करने के लिए इस विधि का उपयोग करता हूं

    for (let i = 0; i < result[0].filters.length; i++) {
      const item = result[0].filters[i].key;
      groupBy[item] = `$${item}`;
    }

और मैं हर क्षेत्र की गिनती पाने के लिए मोंगोडब से पूछने की कोशिश करता हूं

const products = await Product.aggregate([
      {
        $match: {
          category,
        },
      },
      {
        $group: {
          _id: groupBy,
          count: {
            $sum: 1,
          },
        },
      },
      {
        $sort: { count: -1 },
      },
    ]);

परिणाम मुझे मिलता है

[
  { _id: { screen_size: '50', screen_resulation: '4K' }, count: 1 },
  { _id: { screen_size: '55', screen_resulation: 'UHD' }, count: 1 },
  { _id: { screen_size: '55', screen_resulation: '4K' }, count: 1 }
]

मैं जो उम्मीद करता हूं वह है:

[
  { _id: { screen_size: '50' }, count: 1 },
  { _id: { screen_size: '55' }, count: 2 },
  { _id: { screen_resulation: '4K' }, count: 2 },
  { _id: { screen_resulation: 'UHD' }, count: 1 },
]

मुझे वास्तव में मोंगोडब बहुत अच्छा लगता है लेकिन मेरे लिए बहुत कठिन है, मुझे नहीं पता क्यों

1
Ahmed Elsayed 17 मार्च 2021, 00:35

1 उत्तर

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

आप एकाधिक एकत्रीकरण पाइपलाइनों के लिए $facet का उपयोग कर सकते हैं।

db.collection.aggregate([
  {
    "$facet": {
      "screen_size_count": [
        {
          "$group": {
            "_id": "$screen_size",
            "count": {
              $sum: 1
            }
          }
        }
      ],
      "screen_resulation_count:": [
        {
          "$group": {
            "_id": "$screen_resulation",
            "count": {
              $sum: 1
            }
          }
        }
      ]
    }
  }
])

मोंगो खेल का मैदान: https://mongoplayground.net/p/cnEY8NV4HNs

1
Indraraj26 17 मार्च 2021, 07:48