Найдите мне монго эквивалент SQL, который имеет различные, группировать и упорядочить по - PullRequest
0 голосов
/ 17 февраля 2012

Помогите мне найти эквивалент MongoDb для SQL:

select val from tblName where colName1 = 7 
group by colName2 
order by colName3 desc, colName4 desc

1 Ответ

4 голосов
/ 17 февраля 2012

Для всего, кроме группировки:

db.tblName.find({colName1:7},{val:1}).sort({colName3:-1, colName4:-1})

Но для группировки вы либо смотрите MapReduce , либо новую структуру агрегации (структура агрегации еще не находится в стабильной сборке, она только в 2.1.0 и нечетные выпуски не готовы к производству)

С Aggregation Framework, основанным на быстром сканировании документации и отсутствии доступа к последней версии Mongo (т.е. копирование и вставка не будут работать - это основа для начала):

db.tblName.aggregate(
    {$match : {colName1:7}}, //filter by colName1=7
    {$project: {val:1,colName2:1,colName3:1,colname4:1}}, //keep only the specified fields
    {$group: {colname2:1}}, //group by colName2 - this is the bit I'm least clear on
    {$sort: {colName3:-1; colname4:-1}}, //sort
    {$project: {val:1}} //keep only the val column
)

Если кто-то хочет улучшить синтаксис (то есть тот, кто имеет доступ к Mongo с агрегацией), не стесняйтесь:)

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