猫鼬对所有文件求和
mongoose sum a value across all documents
我希望计算文档中与我的查询匹配的所有列的名称数量,
tickets.count({time: {$gte: a}, time: {$lte: tomorrow}}).then(function (numTickets) {
如何获取名为 amount 的文档列的总结果?
例如,如果我有:
{ time: 20, amount: 40}
{ time: 40, amount: 20}
会return总金额(60)?
请记住,我确实需要在查询中使用 {time: {$gte: a}, time: {$lte: tomorrow}
。
我该怎么做?
尝试使用 aggregation framework using the $match and $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
}
我希望计算文档中与我的查询匹配的所有列的名称数量,
tickets.count({time: {$gte: a}, time: {$lte: tomorrow}}).then(function (numTickets) {
如何获取名为 amount 的文档列的总结果?
例如,如果我有:
{ time: 20, amount: 40}
{ time: 40, amount: 20}
会return总金额(60)?
请记住,我确实需要在查询中使用 {time: {$gte: a}, time: {$lte: tomorrow}
。
我该怎么做?
尝试使用 aggregation framework using the $match and $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
}