sql >> Database >  >> NoSQL >> MongoDB

Voer kaartreductie uit voor alle sleutels in verzamelingen - mongodb

Het gebruik van een kaart/verkleining voor die eenvoudige taak is een beetje zoals het gebruik van een (relatief langzame) voorhamer om een ​​noot te kraken. Het aggregatieraamwerk is eigenlijk uitgevonden voor dit soort eenvoudige aggregatie (en kan nog veel meer voor u doen!):

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

Afhankelijk van uw gebruikssituatie kunt u zelfs de $out . weglaten stadium en consumeer de resultaten direct.

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

Houd er rekening mee dat dit bij zeer grote collecties hoogstwaarschijnlijk niet geschikt is, omdat het even kan duren (maar het zou nog steeds sneller moeten zijn dan een kaart-/verkleiningsbewerking).

Om het aantal bestellingen van een enkele klant te vinden, kunt u een eenvoudige zoekopdracht gebruiken en de cursor.count() methode:

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



  1. mangoest verschil van findOneAndUpdate en update

  2. Versnel het zoeken naar regex-tekenreeksen in MongoDB

  3. Operationele databasebeveiliging - deel 1

  4. Sommige velden in Mongo converteren van String naar Array