Mongodb Groupby Агрегирование и сложение запросов вместе

0

я принимаю вперед мой предыдущий вопрос MongoDB GroupBy

После использования агрегатной функции я получаю то, что хочу, теперь я хочу добавить некоторые параметры запроса к этой агрегированной функции, и запрос должен применяться к результату агрегации, например, для entity_id "123", есть 4 года val

"2010", "2011", "2012", "2013"

после применения совокупной функции в соответствии с последним вопросом получите "2013" с идентификатором объекта "123", что является абсолютно правильным.

Теперь я хочу добавить дополнительный запрос, который должен быть похож - "entity_id" 123 "И год" 2013 "и" extra_query ".

Я пробовал использовать $ match, но он принимал за запрос "entity_id" 123 AND Extra.

У меня есть 2 коллекции в моем db

сборник 1.

{
"entity_id":123,
"added_by":"a",
},
{
"entity_id":321,
"added_by":"b",
},

и сбор 2

{
"entity_id":123,
"year":"2014",
"profit_val":2000,
},
{
"entity_id":123,
"year":"2013",
"profit_val":1000,
},
{
"entity_id":123,
"year":"2012",
"profit_val":500,
},
{
"entity_id":123,
"year":"2011",
"profit_val":100000,
},

поэтому, когда я ищу "profit_val"> 10000, я получаю результат как "entity_id" = 123, НО этот результат неверен, так как я хочу посмотреть это условие только с максимальным годом объекта. Мне хотелось бы добавить группу к максимальному году, который я уже сделал, ответьте здесь, теперь я хочу добавить запрос только к этому "сгруппированному" результату.

Надеюсь, это заставит вас понять, что я ищу.

  • 0
    Ничего себе, я только что разбил этот один шарик текста на абзацы, чтобы сделать его читаемым, и это все еще не имеет смысла. Что ты здесь спрашиваешь?
  • 0
    @NeilLunn Я обновил вопрос, надеюсь, это поможет вам понять вопрос.
Показать ещё 1 комментарий
Теги:
aggregation-framework

1 ответ

1

То, что я понял из вопроса, это то, что вы хотите что-то подобное.

> db.collection2.aggregate([
    {
        $sort: {
            "year": 1
        }
    },
    {
        $group: {
            _id: "$entity_id",
            year: {
                $max: "$year"
            },
            profit_val: {
                $last: "$profit_val"
            }
        }
    },
    {
        $match: {
            "profit_val": {
                "$gt": 10000
            }
        }
    }
])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню