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

Mongoose / MongoDB:брой елементи в масив

Аха, намерих решението. aggregate на MongoDB framework ни ​​позволява да изпълним поредица от задачи върху колекция. Особено внимание заслужава $unwind , който разделя масив в документ на уникални документи , така че те могат да бъдат групи / преброени масово .

MongooseJS излага това много достъпно на модел. Използвайки примера по-горе, това изглежда по следния начин:

Thing.aggregate([
    { $match: { /* Query can go here, if you want to filter results. */ } } 
  , { $project: { tokens: 1 } } /* select the tokens field as something we want to "send" to the next command in the chain */
  , { $unwind: '$tokens' } /* this converts arrays into unique documents for counting */
  , { $group: { /* execute 'grouping' */
          _id: { token: '$tokens' } /* using the 'token' value as the _id */
        , count: { $sum: 1 } /* create a sum value */
      }
    }
], function(err, topTopics) {
  console.log(topTopics);
  // [ foo: 4, bar: 2 baz: 2 ]
});

Той е забележимо по-бърз от MapReduce в предварителните тестове на ~200 000 записа и следователно вероятно се мащабира по-добре, но това е само след бегъл поглед. YMMV.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. как да настроите mogodb в услуга за стартиране с удостоверяване

  2. MongoDB:Твърде много позиционни (т.е. „$“) елементи, открити в пътя

  3. 5 начина да получите час от дата в MongoDB

  4. Използване на $in в MongooseJS с вложени обекти

  5. mongo.so:> недефиниран символ:php_json_encode в Unknown на ред 0. След инсталиране mongo драйвер за php