sql >> Databasteknik >  >> NoSQL >> MongoDB

Hämta längden på en lista i MongoDB

Nu skulle jag kunna tänka på två sätt:

1) Använda aggregeringsramverk:

db.log.aggregate([ { $unwind : "$entries" }, { $group : { _id : "$_id", entries : {$sum:1}  } }  ]);

2) Eller så kan du lägga till ett fält i dokumentet som innehåller posterna. Så varje gång du trycker på ett nytt värde till entries array måste du öka räknaren. Uppdateringen blir så här:

db.log.update({ _id : 123 }, { $push : { entries : 'value' }, $inc : { entriesCount : 1 } })

Uppenbarligen har du en avvägning här:aggregeringsramverket är för dyrt för denna enkla operation. Men om du lägger till ett fält i dokumentet bör varje uppdatering öka räknaren.

IMHO, räknaren ser mer rimlig ut, även om den verkar vara en lösning.



  1. Hur får jag data från Mongodb

  2. fel vid anslutning till värd:kunde inte ansluta till server:servervalsfel:serverval timeout aktuell topologi:Typ:Singelservrar

  3. MongoDB Java API:Skillnaden mellan com.mongodb.DBCollection.Save() och com.mongodb.DBCollection.Insert()?

  4. Hantera migrationer med MongoDb