Получать отличительные значения с помощью отсортированных данных

Мне нужен запрос, чтобы получить отдельные ключи, отсортированные по базе баллов в Mongodb 1.6.5

У меня есть записи Like

{key ="SAGAR"
score =16
note ="test1"
}

{key ="VARPE"
score =17
note ="test1"
}

{key ="SAGAR"
score =16
note ="test2"
}

{key ="VARPE"
score =17
note ="test2"
}

Мне нужен запрос, который сортирует все записи по счету и возвращает мне отличный ключ.....

Ответы

Ответ 1

В mongodb есть отличная команда:

вы можете использовать такие как:

db.test.distinct({"key":true,"score":true,"note":true}); 

то же самое в реляционной базе данных:

SELECT DISTINCT key,score,note FROM test; 

И чем результат сортировки, добавив следующий код:

.sort({score : 1}) // 1 = asc, -1 = desc

Итоговый результат будет таким:

 db.test.distinct({"key":true,"score":true,"note":true}).sort({score : 1}); 

Ответ 2

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

db.test.aggregate([
    { $sort : { score : -1 } },
    { $group : {_id : "$key", scores : { $push : "$score" } } }
])

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