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

उल्का सर्वर साइड पर मोंगो ग्रुप कैसे करें

उल्का v1.0.4 के अनुसार:

तो आप collection.rawCollection() पर कॉल कर सकते हैं अंतर्निहित संग्रह वस्तु प्राप्त करने के लिए:

var rawCollection = Orders.rawCollection();

यह rawCollection एक विधि है group जो group . के बराबर है MongoDB शेल में विधि। अंतर्निहित नोड एपीआई एसिंक्रोनस है, हालांकि, आप इसे किसी भी तरह एक सिंक्रोनस फ़ंक्शन में कनवर्ट करना चाहेंगे। हम Meteor.wrapAsync . का उपयोग नहीं कर सकते सीधे group . के बाद से फ़ंक्शन तर्क लेता है जो प्राथमिक कॉलबैक नहीं हैं, इसलिए हम इसके लिए एक रैपर के साथ काम करेंगे:

function ordersGroup(/* arguments */) {
    var args = _.toArray(arguments);
    return Meteor.wrapAsync(function (callback) {
        rawCollection.group.apply(rawCollection, args.concat([callback]));
    })();
}

अपने तरीके के अंदर, आप ordersGroup . पर कॉल कर सकते हैं जैसे आप db.orders.group मोंगो खोल में। हालांकि, तर्कों को एक वस्तु के बजाय अलग से पारित किया जाता है:

ordersGroup(keys, condition, initial, reduce[, finalize[, command[, options]]])

अधिक जानकारी के लिए, यह दस्तावेज़ देखें (हालांकि ध्यान दें कि callback पैरामीटर को छोड़ दिया जाना चाहिए, क्योंकि हमारा एसिंक-रैपिंग इसका ख्याल रखता है)।

तो आपको उन्हें अलग से पास करना होगा:

var result = ordersGroup(
    // keys
    function(doc) {
        return { year: doc.createdAt.toISOString().substring(0, 4) };
    },

    // condition
    {createdAt: {$lt: new Date("2015-12-31"), $gt: new Date("2015-01-01")}},

    // initial
    {months: {}},

    // reduce
    function(order, result) {
        var month = order.createdAt.getMonth()+1,
            date = order.createdAt.getDate();

        month = result.months[month] || (result.months[month] = {});
        date = month[date] || (month[date] = []);
        date.push(order);
    }
);

बेशक, यह केवल सर्वर पर काम करता है, इसलिए सुनिश्चित करें कि आपकी विधि केवल सर्वर कोड में है (अधिमानतः server में) उपनिर्देशिका, या किसी if (Meteor.isServer) . के अंदर )।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb 3.4.3 अनुमति अस्वीकृत wiredtiger_kv_engine.cpp 267 त्रुटि ubuntu 16 के साथ

  2. एक खोलना एकत्रीकरण को कैसे उलटें?

  3. अमान्य स्कीमा, अपेक्षित `mongodb` या `mongodb+srv`

  4. मैं मोंगो में सशर्त रूप से किसी दस्तावेज़ को कैसे ऊपर उठा सकता हूं?

  5. मोंगोडब कुल $ लुकअप बनाम ढूंढें और पॉप्युलेट करें