sql >> Database >  >> NoSQL >> MongoDB

De lengte van een lijst ophalen in MongoDB

Nu zou ik in twee benaderingen kunnen denken:

1) Aggregatieraamwerk gebruiken:

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

2) Of u kunt een veld aan het document toevoegen dat het aantal boekingen bevat. Dus elke keer dat u een nieuwe waarde naar de invoermatrix pusht, moet u de teller verhogen. De update ziet er als volgt uit:

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

Het is duidelijk dat je hier een afweging hebt:het aggregatieraamwerk is te duur voor deze eenvoudige operatie. Maar als je een veld toevoegt om te documenteren, zou elke update de teller moeten verhogen.

IMHO, de teller ziet er redelijker uit, hoewel het een tijdelijke oplossing lijkt.



  1. Mongoose - RangeError:maximale call-stackgrootte overschreden

  2. Vraag naar een lijst in een andere lijst in mongodb

  3. Meertalige attributen in MongoDB

  4. Wat zou het MongoDB C#-stuurprogramma-equivalent zijn van de volgende query met behulp van de array-update-operator $[<identifier>]