Подсчет и агрегирование по полям даты в MongoDB - PullRequest
0 голосов
/ 31 августа 2018

Я создаю приложение, используя Python и MongoDB. Я хотел бы добавить новую коллекцию, в которой есть некоторая статистика о данных, которые я собираю. Мне удалось заставить его функционировать с использованием запросов, но мне кажется, что я должен быть в состоянии перенести эту работу в Aggregation Framework.

Вот пример того, как выглядят мои документы:

foundFile = {
    "_id": ObjectID("5b81abb7bc1e7479981a042f")
    "fileType": ".ico",
    "timeStamp": 1535659134,  # unix timestamp
    "size": 929191            # size in bytes
}

Я хотел бы знать 2 вещи:

  • сколько уникальных типов файлов было добавлено за последние 24 часа и их идентифицирующих строк (например, 32 .ico, 101 .png и т. Д.)
  • Совокупный размер каждого файла. Тип

Это то, для чего подходит Aggregate Framework? Или я должен придерживаться запросов?

Спасибо за чтение.

UPDATE

Для тех, кто только начинает работать с Aggregation Framework, как я, в MongoDB Compass на странице коллекции есть вкладка, которая помогает вам создавать агрегаты и экспортировать их на желаемый язык, который я, например, нашел чрезвычайно полезным для определения почему мой запрос не сработал.

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете использовать ниже агрегации.

db.colname.aggregate([
  {"$match":{"timeStamp":{"$gte":time24hoursago,"$lte":currenttime}}},
  {"$group":{
    "_id":"$fileType",
    "ucount":{"$sum":1},
    "asize":{"$sum":"$size"}
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...