MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

दिनांक फ़ील्ड पर समूहीकरण के बाद दो तिथियों के बीच लापता महीनों को जोड़ने के लिए MongoDB एकत्रीकरण

पहले तो मुझे लगा कि इसे कोड के माध्यम से आसानी से प्राप्त किया जा सकता है, लेकिन MongoDB के साथ भी आप ऐसा कर सकते हैं, लेकिन कोड से इनपुट के साथ:

मान लें कि यदि आपकी दिनांक से जून-2018 और आज तक . है जून-2019 है, तो अपनी प्रोग्रामिंग भाषा का उपयोग करके आप इस प्रारूप में उन दो तिथियों के बीच सभी महीनों को आसानी से प्राप्त कर सकते हैं mm-yyyy . आप MongoDB का उपयोग करके ऐसा करने का प्रयास कर सकते हैं लेकिन मैं क्वेरी के इनपुट के रूप में पसंद करूंगा।

प्रश्न:

db.collection.aggregate([
    {
      $group: {
        _id: {
          date: {
            $dateToString: {
              format: "%m-%Y",
              date: "$reviewUpdatedAt"
            }
          },
          loc: "$branchId"
        },
        Total: {
          $sum: 1
        }
      }
    },
    {
      $group: {
        _id: "$_id.loc",
        reviews: {
          $push: {
            Total: "$Total",
            "date": "$_id.date"
          }
        }
      }
    },
    /** Overwrite existing reviews field with new array, So forming new array :: 
     * as you're passing all months between these dates get a difference of two arrays (input dates - existing dates after group)
     * while will leave us with an array of missing dates, we would iterate on that missing dates array &
     * concat actual reviews array with each missing date
     * */
    {
      $addFields: {
        reviews: {
          $reduce: {
            input: {
              $setDifference: [
                [
                  "06-2018",
                  "07-2018",
                  "08-2018",
                  "09-2018",
                  "10-2018",
                  "11-2018",
                  "12-2018",
                  "01-2019",
                  "02-2019",
                  "03-2019",
                  "04-2019",
                  "05-2019",
                  "06-2019"
                ],
                "$reviews.date"
              ]
            },
            initialValue: "$reviews",
            in: {
              $concatArrays: [
                "$$value",
                [
                  {
                    date: "$$this",
                    Total: 0
                  }
                ]
              ]
            }
          }
        }
      }
    }
  ])

परीक्षा : MongoDB-Playground

संदर्भ : javascript-get-all-months-between-two -तिथियां



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. लेखन त्रुटि:Node.js के साथ MongoDB का उपयोग करने में ऑब्जेक्ट कोई फ़ंक्शन नहीं है

  2. आप MongoDB उपयोगकर्ता अनुमतियों को कैसे बदलते हैं?

  3. MongoDB स्कीमा डिज़ाइन - कई छोटे दस्तावेज़ या कम बड़े दस्तावेज़?

  4. MongoDB एक विदेशी कुंजी के साथ एक फ़ील्ड को दूसरे संग्रह में कॉपी करता है

  5. Mongodb findOne () रिटर्न वैल्यू नहीं नोडज