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

समूह के लिए मोंगोडब एकत्रीकरण पाइपलाइन में मिलीसेकंड को तिथि में कनवर्ट करें?

मैं txnTime . को परिवर्तित करने के पीछे तर्क प्राप्त करने का प्रयास कर रहा हूं किसी दिनांक वस्तु के लिए फ़ील्ड क्योंकि किसी दिनांक फ़ील्ड या मिलीसेकंड में टाइमस्टैम्प (जैसे आप वर्तमान में क्या कर रहे हैं) द्वारा समूहीकृत करने से वही परिणाम प्राप्त होंगे क्योंकि वे दोनों अपने-अपने स्वरूपों में अद्वितीय हैं!

txnTime बदलने के लिए दिनांक वस्तु के लिए फ़ील्ड में आपको एक $ शामिल करना चाहिए परियोजना $group<से पहले पाइपलाइन /कोड> इस अभिव्यक्ति के साथ पाइपलाइन चरण

"txnTime": {
    "$add": [ new Date(0), "$txnTime" ]
}

ताकि आप अपना कर सकें। $समूह परिवर्तित/अनुमानित txnTime फ़ील्ड पर संचालन:

var convertedTxnTime = { "$add": [new Date(0), "$txnTime"] };

/*
  If using MongoDB 4.0 and newer, use $toDate 

  var convertedTxnTime = { "$toDate": "$txnTime" };

  or $convert

  var convertedTxnTime = { "$convert": { "input": "$txnTime", "to": "date" } };

*/

db.campaign_wallet.aggregate([
    { "$match": { 
        "campaignId" : 1 , 
        "txnTime" : { 
            "$gte" : 1429554600000 , 
            "$lte" : 1430159400000
        }
    } },
    { "$group" : { 
        "_id" : {
            "txnTime": convertedTxnTime,
            "msisdn" : "$msisdn"
        }, 
        "msisdnCount" : { "$sum" : 1}
    } }
]);

आउटपुट :(इस से नमूना दस्तावेजों के आधार पर प्रश्न )

/* 0 */
{
    "result" : [ 
        {
            "_id" : {
                "txnTime" : ISODate("2015-04-25T18:30:00.000Z"),
                "msisdn" : "91808770101"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime" : ISODate("2015-04-27T05:11:54.796Z"),
                "msisdn" : "9180877010"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime" : ISODate("2015-04-25T18:30:01.111Z"),
                "msisdn" : "91808070101"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime" : ISODate("2015-04-25T18:30:00.000Z"),
                "msisdn" : "91808070101"
            },
            "msisdnCount" : 2
        }, 
        {
            "_id" : {
                "txnTime" : ISODate("2015-04-27T05:11:54.796Z"),
                "msisdn" : "9189877000"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime" : ISODate("2015-04-27T05:11:54.796Z"),
                "msisdn" : "9189877667"
            },
            "msisdnCount" : 1
        }
    ],
    "ok" : 1
}

-- अपडेट करें --

दस्तावेज़ों को दिनांक के अनुसार YYYY-MM-DD . प्रारूप के साथ समूहीकृत करने के लिए , दिनांक एकत्रीकरण ऑपरेटरों का उपयोग करें

उदाहरण:

var convertedTxnTime = { "$add": [new Date(0), "$txnTime"] };

/*
  If using MongoDB 4.0 and newer, use $toDate 

  var convertedTxnTime = { "$toDate": "$txnTime" };

  or $convert

  var convertedTxnTime = { "$convert": { "input": "$txnTime", "to": "date" } };

*/

db.campaign_wallet.aggregate([
    { "$match": { 
        "campaignId" : 1 , 
        "txnTime" : { 
            "$gte" : 1429554600000 , 
            "$lte" : 1430159400000
        }
    } },
    { "$group" : { 
        "_id" : {
            "txnTime_year" : { "$year": convertedTxnTime },
            "txnTime_month" : { "$month": convertedTxnTime },
            "txnTime_day" : { "$dayOfMonth": convertedTxnTime },
            "msisdn": "$msisdn"
        }, 
        "msisdnCount" : { "$sum" : 1}
    } }
]);

आउटपुट :

/* 0 */
{
    "result" : [ 
        {
            "_id" : {
                "txnTime_year" : 2015,
                "txnTime_month" : 4,
                "txnTime_day" : 25,
                "msisdn" : "91808770101"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime_year" : 2015,
                "txnTime_month" : 4,
                "txnTime_day" : 25,
                "msisdn" : "91808070101"
            },
            "msisdnCount" : 3
        }, 
        {
            "_id" : {
                "txnTime_year" : 2015,
                "txnTime_month" : 4,
                "txnTime_day" : 27,
                "msisdn" : "9180877010"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime_year" : 2015,
                "txnTime_month" : 4,
                "txnTime_day" : 27,
                "msisdn" : "9189877000"
            },
            "msisdnCount" : 1
        }, 
        {
            "_id" : {
                "txnTime_year" : 2015,
                "txnTime_month" : 4,
                "txnTime_day" : 27,
                "msisdn" : "9189877667"
            },
            "msisdnCount" : 1
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $प्रोजेक्शन बनाम $elemMatch

  2. मोंगोडब में सबरे मूल्य निकालें

  3. Mongoose.js:उपयोगकर्ता नाम LIKE मान द्वारा उपयोगकर्ता खोजें

  4. मोंगोडब इंडेक्स कैसे काम करता है?

  5. MongoDB - क्वेरी को कैननिकलाइज़ नहीं कर सकता:BadValue अज्ञात ऑपरेटर:$meta