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

Изпълнете намаляването на картата за всички ключове в колекциите - mongodb

Използването на map/reduce за тази проста задача е малко като използването на (сравнително бавен) чук за счупване на гайка. рамката за агрегиране основно е измислен за този вид просто агрегиране (и може да направи много повече за вас!):

db.order.aggregate([
    { "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}},
    { "$out": "order_total"}
])

В зависимост от вашия случай на употреба можете дори да пропуснете $out сцена и консумират резултатите директно.

> db.orders.aggregate([{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}}])
{ "_id" : "b", "orders" : 2 }
{ "_id" : "a", "orders" : 3 }

Обърнете внимание, че при много големи колекции това най-вероятно не е подходящо, тъй като отнема известно време (но все пак трябва да е по-бързо от операция карта/намаляване).

За да намерите броя на поръчките на един клиент, можете да използвате проста заявка и да използвате cursor.count() метод:

> db.orders.find({ "customer": "a" }).count()
3



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $lookup pipeline match by _id не работи

  2. 3 начина за връщане на произволна извадка от документи от колекция MongoDB

  3. Актуализирайте елементите на масив mongo по индекс с c-драйвер

  4. разбират MongoDB кеш система

  5. Полета за избор на Mongoose (вложени)