2017-01-19 4 views
3

В Oracle вместо кодирования один запрос для каждого возможного предложения ORDER BY, вы можете указать функцию DECODE, которая оценивает выбор пользователя и динамически изменяет ORDERY BY следующим образом:Есть ли какой-либо эквивалент функции Oracle Decode в MongoDB?

SELECT . . . 
FROM emp 
GROUP 
     BY DECODE(i_grouping_col,'E',emp_no,'D',dept_no); 

Есть ли способ, чтобы практиковать декодировать функцию в MongoDB?

ответ

0

Да, была функция db.collection.group(), которая может использоваться для выполнения того, что вы пытаетесь сделать, однако она лишена версии mongodb версии 3.4 из-за различных ограничений.

пример будет

db.orders.group(
    { 
    key: { ord_dt: 1, 'item.sku': 1 }, 
    cond: { ord_dt: { $gt: new Date('01/01/2012') } }, 
    reduce: function (curr, result) { }, 
    initial: { } 
    } 
) 

SQL-эквивалент

SELECT ord_dt, item_sku 
FROM orders 
WHERE ord_dt > '01/01/2012' 
GROUP BY ord_dt, item_sku 

вы можете прочитать больше об этом Here