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

Mongoose / MongoDB:policz elementy w tablicy

Aha, znalazłem rozwiązanie. aggregate MongoDB framework pozwala nam na wykonanie szeregu zadań na kolekcji. Na szczególną uwagę zasługuje $unwind , który dzieli tablicę w dokumencie na unikalne dokumenty , więc mogą być grupami / liczonymi masowo .

MongooseJS eksponuje to bardzo przystępnie na modelu. W powyższym przykładzie wygląda to następująco:

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

Jest zauważalnie szybszy niż MapReduce we wstępnych testach na ~200 000 rekordów, a zatem prawdopodobnie lepiej się skaluje, ale to tylko pobieżny rzut oka. MMW.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd:Route.post() wymaga funkcji wywołania zwrotnego, ale otrzymał [object Undefined]

  2. Jak połączyć Mongo DB z aplikacją na Androida?

  3. System plików tylko do odczytu podczas próby mkdir /data/db na Macu

  4. Grupuj według wielu kolumn w MongoDB

  5. Projekty dokumentów w Mongo