sql >> Databáze >  >> NoSQL >> MongoDB

agregační rámec mongodb - vygenerujte _id z funkce

Stejně jako v MongoDB 2.4 nemůžete v Aggregation Framework implementovat žádné vlastní funkce. Pokud chcete $group o jedno nebo více polí, musíte je přidat buď pomocí agregačních operátorů a výrazů, nebo pomocí explicitní update(), pokud nechcete počítat pokaždé.

Pomocí Aggregation Framework můžete přidat vypočítaný bucket pole v $project krok potrubí pomocí $cond operátor .

Zde je příklad výpočtu rozsahů na základě numberField které pak lze použít v $group kanál pro součet/prům/atd:

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. Hledání klíčů MongoDB bez ohledu na velikost písmen

  2. Kolejnice g selhávají pro mongoidní příkazy

  3. Jak aktualizovat pole _id v dokumentu mongodb

  4. Načíst zvuk - binární soubor - uložený v mém Mlab