Nano Hash - криптовалюты, майнинг, программирование

MongoDB и платформа агрегации

У меня есть следующая коллекция в mongodb.

{ "_id" : ObjectId("519a35ee8f2ceda43f42add5"), "articulo" : "Sobre mongodb", "autor" : "xxxx1", "calificacion" : 3 }
{ "_id" : ObjectId("519a360b8f2ceda43f42add6"), "articulo" : "Aggregation framework", "autor" : "xxxx1", "calificacion" : 5 }
{ "_id" : ObjectId("519a361b8f2ceda43f42add7"), "articulo" : "Sobre journal", "autor" : "xxxx2", "calificacion" : 4 }
{ "_id" : ObjectId("519a362e8f2ceda43f42add8"), "articulo" : "Manipulando datos", "autor" : "xxxx1", "calificacion" : 2 }
{ "_id" : ObjectId("519a36418f2ceda43f42add9"), "articulo" : "MongoDB for dba", "autor" : "xxxx2", "calificacion" : 5 }
{ "_id" : ObjectId("519a4aa18f2ceda43f42adda"), "articulo" : "ejemplo2", "autor" : "xxxx1", "calificacion" : 5 }

Я хочу подсчитать количество статей (articulos) с максимальной оценкой (calificacion) автора (автора).

xxxx1 имеет 2 статьи с оценкой 5 xxxx2 имеет 1 статью с оценкой 5

(я не знаю какая максимальная оценка)

Я пробовал это:

db.ejemplo.aggregate([
    {$group:{_id: "$autor" , calificacion:{$max:"$calificacion" }}} 
])

но я получаю только авторов с максимальной оценкой. Могу ли я сделать это с помощью Aggregation Framework?


Ответы:


1

Вы можете попробовать операцию агрегации следующим образом:

db.ejemplo.aggregate([
    { $group : { _id : { autor : "$autor",
                         calificacion : "$calificacion" },
                 articulos : { $sum : 1 },
    }},
    { $sort : { "_id.calificacion" : -1 }},
    { $group : { _id : "$_id.autor",
                 calificacion : { $first : "$_id.calificacion" },
                 articulos : { $first : "$articulos" },
    }}
])

И результат такой:

{
    "result" : [
        {
            "_id" : "xxxx1",
            "calificacion" : 5,
            "articulos" : 2
        },
        {
            "_id" : "xxxx2",
            "calificacion" : 5,
            "articulos" : 1
        }
    ],
    "ok" : 1
}

Спасибо, Линда.

21.05.2013
  • Ох, спасибо!!!! Оно работает!!!! Я изучаю монго, поэтому мне нужно понять, как я могу выполнять простые запросы. 21.05.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..