खोज…


टिप्पणियों

सर्वर एकत्रीकरण

उल्का में औसत एकत्रीकरण प्रश्न

क्या यह संभव है कि 'सर्वर' की तरफ केवल 'मीटॉर 0.6' में उपयोग के लिए 'वास्तविक' मोंगबॉब लाइब्रेरी को पैकेज किया जाए

ग्राहक एकत्रीकरण (मिनीमोंगो)

https://github.com/utunga/pocketmeteor/tree/master/packages/mongowrapper

सर्वर एकत्रीकरण

एंड्रयू माओ का समाधान। उल्का में औसत एकत्रीकरण प्रश्न

Meteor.publish("someAggregation", function (args) {
    var sub = this;
    // This works for Meteor 0.6.5
    var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;

    // Your arguments to Mongo's aggregation. Make these however you want.
    var pipeline = [
        { $match: doSomethingWith(args) },
        { $group: {
            _id: whatWeAreGroupingWith(args),
            count: { $sum: 1 }
        }}
    ];

    db.collection("server_collection_name").aggregate(        
        pipeline,
        // Need to wrap the callback so it gets called in a Fiber.
        Meteor.bindEnvironment(
            function(err, result) {
                // Add each of the results to the subscription.
                _.each(result, function(e) {
                    // Generate a random disposable id for aggregated documents
                    sub.added("client_collection_name", Random.id(), {
                        key: e._id.somethingOfInterest,                        
                        count: e.count
                    });
                });
                sub.ready();
            },
            function(error) {
                Meteor._debug( "Error doing aggregation: " + error);
            }
        )
    );
});

एक सर्वर विधि में एकत्रीकरण

एकत्रीकरण करने का दूसरा तरीका Mongo.Collection#rawCollection() का उपयोग करके है

यह केवल सर्वर पर चलाया जा सकता है।

यहाँ एक उदाहरण है जिसे आप उल्का 1.3 और उच्चतर में उपयोग कर सकते हैं:

Meteor.methods({
   'aggregateUsers'(someId) {
      const collection = MyCollection.rawCollection()
      const aggregate = Meteor.wrapAsync(collection.aggregate, collection)

      const match = { age: { $gte: 25 } }
      const group = { _id:'$age', totalUsers: { $sum: 1 } }

      const results = aggregate([
         { $match: match },
         { $group: group }
      ])

      return results
   }
})


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow