sql >> Database teknologi >  >> NoSQL >> MongoDB

meteorforespørgsel til alle dokumenter med unikt felt

Der er en generel opsætning, du kan bruge til at få adgang til det underliggende driverindsamlingsobjekt og derfor .aggregate() uden at installere andre plugins.

Den grundlæggende proces går sådan her:

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);
            }
        )
    );

});

Så du definerer en samling for output fra aggregeringen, og inden for en rutine som denne udgiver du så den service, som du også vil abonnere på i din klient.

Inde i denne køres aggregeringen og udfyldes i den anden samling (logisk, da den faktisk ikke skriver noget). Så du bruger den samling på klienten med den samme definition, og alle de samlede resultater returneres bare.

Jeg har faktisk et fuldt fungerende eksempel på anvendelse af en lignende proces i dette spørgsmål , samt brug af meteor hacks-aggregatet pakke på dette spørgsmål også her, hvis du har brug for yderligere reference.




  1. Hvorfor anbefaler MongoDB-dokumenterne ikke at bruge DBREF'er?

  2. mongoose 'findById' returnerer null med gyldigt id

  3. Brug af MongoEngine-dokumentklassemetoder til tilpasset validering og pre-save hooks

  4. MongoDb C# indtastede sammenlægninger med Group Unwind og Project