MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

zapytanie meteorowe dla wszystkich dokumentów z unikalnym polem

Istnieje ogólna konfiguracja, za pomocą której można uzyskać dostęp do podstawowego obiektu kolekcji sterowników, a zatem .aggregate() bez instalowania żadnych innych wtyczek.

Podstawowy proces wygląda tak:

FooAges = new Meteor.Collection("fooAges");

Meteor.publish("fooAgeQuery", function(args) {
    var sub = this;

    var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;

    var pipeline = [
        { "$group": {
            "_id": "$age", 
            "name": { "$max": "$name" }
        }}
    ];

    db.collection("foo").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("fooAges", Random.id(), {
                        "age": e._id,
                        "name": e.name
                    });
                });
                sub.ready();
            },
            function(error) {
                Meteor._debug( "Error doing aggregation: " + error);
            }
        )
    );

});

Definiujesz więc kolekcję dla danych wyjściowych agregacji i w ramach procedury takiej jak ta publikujesz usługę, którą również zamierzasz subskrybować w swoim kliencie.

Wewnątrz tego agregacja jest uruchamiana i umieszczana w drugiej kolekcji (logicznie, ponieważ w rzeczywistości nic nie zapisuje). Następnie używasz tej kolekcji na kliencie z tą samą definicją, a wszystkie zagregowane wyniki są po prostu zwracane.

W rzeczywistości mam pełną działającą przykładową aplikację podobnych procesów w ramach to pytanie , a także użycie agregatu Meteor hacks pakiet na to pytanie tutaj również, jeśli potrzebujesz dalszych informacji.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor pochłania ogromną liczbę połączeń Mongo

  2. mongodb, sortowanie według geoNear i daty?

  3. Czy MongoDB może wypełnić puste dokumenty?

  4. polecenie mongorestore zastąpić istniejące rekordy?

  5. Mongoose:jak zaktualizować *wszystkie* osoby spełniające warunek?