MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

meteor заявка за всички документи с уникално поле

Има обща настройка, която можете да използвате за достъп до основния обект за събиране на драйвери и следователно .aggregate() без да инсталирате други добавки.

Основният процес протича по следния начин:

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

});

Така че дефинирате колекция за изхода на агрегирането и в рамките на рутина като тази след това публикувате услугата, за която също ще се абонирате във вашия клиент.

Вътре в това агрегацията се изпълнява и попълва в другата колекция (логично, тъй като всъщност не пише нищо). Така че след това използвате тази колекция на клиента със същата дефиниция и всички обобщени резултати просто се връщат.

Всъщност имам пълно работещо примерно приложение на подобен процес в този въпрос , както и използването на aggregate meteor hacks пакет на този въпрос тук също, ако имате нужда от допълнителна справка.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Scala - Създаване на обект IndexedDatasetSpark

  2. findAll се проваля след повторно инициализиране на play morphia

  3. Неуспешно обработване на MongoDB при вмъкване в Java

  4. Кога да използваме GridFS на MongoDB?

  5. броят на групите и подгрупите в mongodb