sql >> Database >  >> NoSQL >> MongoDB

mongodb-aggregatieraamwerk - genereer _id van functie

Net als bij MongoDB 2.4 kunt u geen aangepaste functies implementeren in het Aggregation Framework. Als je wilt $group door een of meer velden, moet u deze toevoegen via aggregatie-operators en expressies of via een expliciete update() als u niet elke keer wilt berekenen.

Met behulp van het Aggregation Framework kunt u een berekende bucket . toevoegen veld in een $project pijplijnstap met de $cond operator .

Hier is een voorbeeld van het berekenen van bereiken op basis van numberField die vervolgens kan worden gebruikt in een $group pijplijn voor sum/avg/etc:

db.data.aggregate(
    { $project: {
        numberfield: 1,
        someotherfield: 1,
        bucket: {
            $cond: [ {$and: [ {$gte: ["$numberfield", 1]}, {$lte: ["$numberfield", 20]} ] }, '1-20', {
            $cond: [ {$lt: ["$numberfield", 41]},  '21-40',  {
            $cond: [ {$lt: ["$numberfield", 61]},  '41-60',  {
            $cond: [ {$lt: ["$numberfield", 81]},  '61-80',  {
            $cond: [ {$lt: ["$numberfield", 101]}, '81-100', '100+' ]
            }]}]}]}]
        }
    }},
    { $group: {
        _id: "$bucket",
        sum: { $sum: "$someotherfield" }
    }}
)



  1. Als u in een primair-secundaire Mongo db-set per ongeluk naar een secundair schrijft, wordt dit in het primaire weergegeven en wordt het doorgestuurd naar het primaire

  2. volledige tekst van txt-bestand opslaan in mongodb

  3. Hoe json-document verkregen van mongoDB te deserialiseren in een POJO?... (Migreren van Morphia naar Java Mongo Driver 3.0)

  4. meteoor, mongodb, spatiebalken, hoe geef ik slechts 2 decimalen weer?