MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Framework agregacji mongodb - generuj _id z funkcji

Podobnie jak w MongoDB 2.4, nie można zaimplementować żadnych niestandardowych funkcji w ramach Aggregation Framework. Jeśli chcesz $group o jedno lub więcej pól, musisz je dodać za pomocą operatorów i wyrażeń agregacji lub za pomocą jawnej funkcji update(), jeśli nie chcesz za każdym razem obliczać.

Korzystając z agregacji Framework możesz dodać obliczony bucket pole w $project krok potoku z $cond operator .

Oto przykład obliczania zakresów na podstawie numberField które mogą być następnie użyte w $group potok dla sum/śr./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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tajemniczy błąd mongodb LEFT_SUBFIELD obsługuje tylko Object:statystyki nie:6

  2. MongoDB Multikey Compound Index — Potrzebujesz pomocy w zrozumieniu ograniczeń

  3. Łączenie się z kontenerem docker Mongodb z innego kontenera docker

  4. Nie można połączyć się z modułem Mongodb w Kubernetes (odmowa połączenia)

  5. Pośrednia modyfikacja przeciążonej właściwości App\Dossier::$program nie ma żadnego efektu