2013-12-10 2 views
2

У меня есть следующий запрос: агрегация

{"$match": {"expired":{"$exists":False}}}, 
    {"$group":{ 
    "_id":"$retailer", 
    "average_price": {"$avg":"$price"}, 
    "highest_price": {"$max":"$price"}, 
    "lowest_price": {"$min":"$price"}, 
    "online": {"$sum":1} 
}} 

Я хочу, чтобы расширить это путем подсчета, сколько товаров на продвижение. Я пробовал это (что, очевидно, недействительно):

{"$match": {"expired":{"$exists":False}}}, 
    {"$group":{ 
    "_id":"$retailer", 
    "average_price": {"$avg":"$price"}, 
    "highest_price": {"$max":"$price"}, 
    "lowest_price": {"$min":"$price"}, 
    "online": {"$sum":1}, 
    "promomtion": {"$sum":{"promotion":True}}, 
}} 

Есть ли способ вычислить этот показатель продвижения по этому запросу?

+3

Проект A 'promotion_c: {$ конд: [{$ эк: { '$ продвижение': истинно}}, 1,0]}' затем суммировать 'promotion_c' – Sammaye

ответ

2

решаемые это с:

{"$match": {"expired":{"$exists":False}}}, 
    {"$group":{ 
    "_id":"$retailer", 
    "average_price": {"$avg":"$price"}, 
    "highest_price": {"$max":"$price"}, 
    "lowest_price": {"$min":"$price"}, 
    "online": {"$sum":1}, 
    "promotion_count": { "$sum": { "$cond": [ { "$eq": [ "$promotion", True ] }, 1,0 ] }} 
}} 
Смежные вопросы