Монголитный совокупный запрос с добавленными полями - PullRequest
0 голосов
/ 23 января 2019

Задача

У меня есть коллекция hotelreviews_collection, содержащая 1 миллион строк (документов) отзывов с различными метаданными. Я хотел бы сгруппировать по полю Hotel_Name, посчитать, сколько раз этот отель появлялся, а также получить поля "lat", "lng" и "Average_Score" с моим запросом. Три дополнительные строки одинаковы для каждого Hotel_Name.

Я делаю запросы в R, используя монгольскую библиотеку, подключенную к локальной MongoDB.

Моя попытка

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

Текущий код

overviewData <- M_CONNECTION$aggregate('[{"$group":{"_id":"$Hotel_Name", "count": {"$sum":1}, "average":{"$avg":"$distance"}}}]',
  options = '{"allowDiskUse":true}')

Я полностью растерялся, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 23 января 2019

Я решил свою проблему, используя следующий код.

db.getCollection("hotelreviews_collection").aggregate(
    [
        { 
            "$group" : {
                "_id" : {
                    "Hotel_Name" : "$Hotel_Name", 
                    "lat" : "$lat", 
                    "lng" : "$lng", 
                    "Average_Score" : "$Average_Score"
                }, 
                "COUNT(Hotel_Name)" : {
                    "$sum" : NumberInt(1)
                }
            }
        }, 
        { 
            "$project" : {
                "Hotel_Name" : "$_id.Hotel_Name", 
                "lat" : "$_id.lat", 
                "lng" : "$_id.lng", 
                "Average_Score" : "$_id.Average_Score", 
                "COUNT(Hotel_Name)" : "$COUNT(Hotel_Name)", 
                "_id" : NumberInt(0)
            }
        }
    ]
)
...