【发布时间】:2017-04-22 00:06:02
【问题描述】:
我对 Mongo 比较陌生,并试图弄清楚如何完成此查询。我在 node.js 中使用猫鼬。我想用嵌套的对象数组从这个文档中获取 sell.amount 和 buy.amount 的总和。 trades 数组很大,我想将其限制为第一个(从 0 开始)n 个对象。我希望能够得到类似的回报:
{buy.totalAmount, buy.tradesCount},{sell.totalAmount, sell.tradesCount},
$limit 选择的元素个数的总和
我想我一定很接近了,但到目前为止我不知道如何做到这一点。
我的查询:
tradePair.aggregate(
{$match: {pair:"STOCK"}},
{$unwind:"$trades"},
{$limit: 20},
{$group : { _id : '$trades.buy',
count : {$sum : 1},
totalAmount: { $sum: '$trades.buy.amount' }
}},
function(err,result){
return result
}
)
我的数据库文档,仅显示 2 个交易数组元素..of 很多...
{
"_id" : ObjectId("58fa86c81cdd7b2375cdd4cc"),
"pair" : "STOCK",
"trades" : [
{
"sell" : {
"trades" : 1,
"total" : 0.13309789,
"amount" : 24.80139,
"rate" : 0.00536655
},
"buy" : {
"trades" : 0,
"total" : 0,
"amount" : 0,
"rate" : 0
},
"_id" : ObjectId("58fa87290567372b4035d16f"),
"endTradeId" : 41306,
"startTradeId" : 41306,
"dateEnd" : ISODate("2017-04-21T21:37:39.000Z"),
"dateStart" : ISODate("2017-04-21T21:37:39.000Z")
},
{
"sell" : {
"trades" : 2,
"total" : 1.23879614,
"amount" : 230.83659924,
"rate" : 0.00536655
},
"buy" : {
"trades" : 0,
"total" : 0,
"amount" : 0,
"rate" : 0
},
"_id" : ObjectId("58fa87290567372b4035d16e"),
"endTradeId" : 41305,
"startTradeId" : 41304,
"dateEnd" : ISODate("2017-04-21T21:35:28.000Z"),
"dateStart" : ISODate("2017-04-21T21:35:27.000Z")
},
...,
...,
],
"lastTradeId" : 41306,
"dateStart" : ISODate("2017-04-21T21:37:39.000Z"),
"dateEnd" : ISODate("2017-04-21T21:37:39.000Z"),
"__v" : 0
}
【问题讨论】:
标签: mongodb-query