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

Агрегиране на ниво месец и ниво година, също намерете средната стойност в MongoDB

  • $objectToArray конвертиране на data обект в масив формат ключ-стойност
  • $filter за повторение на цикъла на преобразувания по-горе масив
  • проверете $and условия
  • $toDate за да получите data от дата на низ
  • $month за да изберете месец от датата и $year за да изберете година
  • $in проверка в състояние, ако месецът е в масив от месеци и годината е в масив от години
  • $arrayToObject преобразувайте обратно в обект от масив ключ-стойност
var years = [2021];
var months = [5];
db.collection.aggregate([
  {
    $project: {
      data: {
        $arrayToObject: {
          $filter: {
            input: { $objectToArray: "$data" },
            cond: {
              $and: [
                { $in: [{ $year: { $toDate: "$$this.k" } }, years] },
                { $in: [{ $month: { $toDate: "$$this.k" } }, months] }
              ]
            }
          }
        }
      }
    }
  }
])

Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. автоматично нарастване в node-mongodb-native с помощта на колекция от броячи

  2. Предупреждение:Достъп до несъществуващо свойство „MongoError“ на модулни експорти в рамките на кръгова зависимост

  3. Коя NoSQL база данни трябва да използвам за регистриране?

  4. Пагинация с диапазон на MongoDB

  5. Най-добрата практика на MongoDB за препращане