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

Запитване и сумиране на всички с mongoose

Можете да използвате тръбопровода за агрегиране за добавяне на изчислени полета към резултат. По-долу има някои примери за използване на mongo shell, но синтаксисът в помощника на Mongoose() е подобен.

Например, за да изчислите суми (на потребителски документ), можете да използвате $add израз в $project етап :

db.user.aggregate(
    // Limit to relevant documents and potentially take advantage of an index
    { $match: {
        user_id: "foo"
    }},

    { $project: {
        user_id: 1,
        total: { $add: ["$user_totaldocs", "$user_totalthings"] }
    }}
)

За да изчислите суми в множество документи, трябва да използвате $group етап с $sum акумулатор , например:

db.user.aggregate(
    { $group: {
        _id: null,
        total:       { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
        totaldocs:   { $sum: "$user_totaldocs" },
        totalthings: { $sum: "$user_totalthings" }
    }}
)

Може да искате само един total поле; Добавих в totaldocs и totalthings като примери за изчисляване на множество полета.

Групов _id от null ще комбинира стойности от всички документи, предадени на $group етап, но можете да използвате и други критерии тук (като групиране по user_id ).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. junit тестови случаи с помощта на embed mongodb de.flapdoodle.embed.mongo

  2. Как да изберете две стойности на таблица (документ) наведнъж по потребителски идентификатор в mongoose?

  3. Добавяне на BSON масив към BsonDocument в MongoDB

  4. Предоставя ли Mongoose достъп до предишната стойност на свойството в pre('save')?

  5. Как да добавите индекси в проект mongoDB с рамка Morphia