1

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

tickets.count({time: {$gte: a}, time: {$lte: tomorrow}}).then(function (numTickets) { 

Как я могу получить общий результат столбца документа называется суммой?

Например, если у меня есть:

{ time: 20, amount: 40} 
{ time: 40, amount: 20} 

было бы вернуть общую сумму (60)?

Помните, что мне нужно использовать {time: {$gte: a}, time: {$lte: tomorrow} в запросе.

Как мне это сделать?

ответ

0

Попробуйте с aggregation framework помощью операторов $match и $group, то есть что-то вроде этого

db.tickets.aggregate([ 
    { $match: { time: {$gte: a, $lte: tomorrow} } }, 
    { $group: { _id: null, amount: { $sum: "$amount" } } } 
]) 

, например, с тестовыми данными, как этот

/* 1 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb46"), 
    "time" : 20, 
    "amount" : 40 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb47"), 
    "time" : 40, 
    "amount" : 20 
} 

/* 3 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb48"), 
    "time" : 50, 
    "amount" : 10 
} 

/* 4 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb49"), 
    "time" : 10, 
    "amount" : 5 
} 

трубопровод (с фиктивным временным диапазоном), например, следующие

db.tickets.aggregate([ 
    { $match: { time: {$gte: 20, $lte: 40} } }, 
    { $group: { _id: null, amount: { $sum: "$amount" } } } 
]) 

даст вам результат, как этот

/* 1 */ 
{ 
    "_id" : null, 
    "amount" : 60 
} 

Pipeline in action

+0

будет, что работа с мангуста тоже? Причина tickets.aggregate ([{$ match: {time: {$ gte: a, $ lte: tomorrow}}}, {$ group: {_id: null, amount: {$ sum: "$ amount"} }}]), тогда (function (test) { не будет работать для меня, в терминах его не исполняет. – maria

+0

билеты - моя модель мангуста да. Не могли бы вы взглянуть на Teamviewer? Во всяком случае, я посмотрю , и принять ваш ответ :) – maria

+0

Ваш ответ должен иметь два параметра (для ошибки и результата), я думаю. [Это] (http://stackoverflow.com/questions/26623141/mongoose-aggregate-and-sort) Вопрос SO показывает, как использовать агрегатный конвейер с мангустом - надеюсь, что это поможет. В противном случае я постараюсь проверить его сам сегодня вечером – DAXaholic

Смежные вопросы