База данных Mongo, объединяющая результаты $ First и $ last - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть набор данных примерно так

{ "_id" : { "borough" : "Manhattan", "cuisine" : "Tex-Mex" }, "RestaruntCount" : 53 }
{ "_id" : { "borough" : "Manhattan", "cuisine" : "Bakery" }, "RestaruntCount" : 221 }
{ "_id" : { "borough" : "Manhattan", "cuisine" : "Soups & Sandwiches" }, "RestaruntCount" : 44 }
{ "_id" : { "borough" : "Manhattan", "cuisine" : "Vietnamese/Cambodian/Malaysia" }, "RestaruntCount" : 38 }
{ "_id" : { "borough" : "Manhattan", "cuisine" : "Filipino" }, "RestaruntCount" : 5 }
{ "_id" : { "borough" : "Manhattan", "cuisine" : "Egyptian" }, "RestaruntCount" : 5 }
{ "_id" : { "borough" : "Manhattan", "cuisine" : "Nuts/Confectionary" }, "RestaruntCount" : 4 }

Из этого набора данных мне нужно получить самое высокое и самое низкое количество типов кухни в районе Манхэттена. Я знаю, что мне нужно получить это, используя $ first и $ last , но я не могу продолжить это.

на данный момент я получил этот вывод из нижеприведенного запроса:

db.restaurants.aggregate(    [      { $match: { "borough": "Manhattan"  } },     { $group: {_id: {borough:"$borough", cuisine: "$cuisine"}, count : { $sum : 1} } },  {$sort: {count:1,_id:1}}     ] );

1 Ответ

0 голосов
/ 24 апреля 2018

Попробуйте выполнить агрегацию ниже:

db.restaurants.aggregate([
    {
        $match: { "_id.borough": "Manhattan" }
    },
    {
        $sort: { RestaruntCount: 1 }
    },
    {
        $group: {
            _id: {borough:"$borough", cuisine: "$cuisine"},
            first: { $first: "$$ROOT" },
            last: { $last: "$$ROOT" }
        }
    }
])

Вы можете использовать специальную переменную $$ROOT для захвата всего документа во время агрегации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...