MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Трябва да се сумира от стойността на обект на масив в mongodb

Не работи правилно, защото агрегира всички документи в колекцията; вие групирате по константа "_id":"tempId" , просто трябва да посочите правилния ключ, като добавите $ като:

db.getCollection('myCollection').aggregate([
    { "$group": {
        "_id": "$tempId",
        "totalValue": { 
            "$sum": { "$sum": "$messages.data.value" } 
        }
    } }
])

което по същество е едноетапна конвейерна версия на агрегатна операция с допълнително поле, което съдържа сумарния израз преди груповия конвейер, след което извиква това поле като $sum оператор в групата.

Горното работи от $sum от MongoDB 3.2+ се предлага както в $project и $group етапи и когато се използва в $проект етап, $sum връща сумата от списъка с изрази. Изразът "$messages.data.value" връща списък с числа [120, 1200] които след това се използват като $sum израз:

db.getCollection('myCollection').aggregate([
    { "$project": {
        "values": { "$sum": "$messages.data.value" },
        "tempId": 1,
    } },
    { "$group": {
        "_id": "$tempId",
        "totalValue": { "$sum": "$values" }
    } }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Редът на документите за връщане на Mongodb find

  2. Вземете брой на общите документи с MongoDB, когато използвате лимит

  3. Как да групирате по множество колони и множество стойности в mongodb

  4. Възможно ли е да сортирате, групирате и ограничавате ефективно в Mongo с конвейер?

  5. При създаване на първи администраторски потребител на mongdb клъстер се получава грешка, не може да се добави потребител:не е упълномощен от администратора да изпълни команда