MongoDb分区在查询中不工作
这就是我的数据的样子MongoDb分区在查询中不工作,mongodb,Mongodb,这就是我的数据的样子 { "_id" : ObjectId("5919f19716e64ad662bd753b"), "cardNumber" : "11111111115523", "transID" : "5645344133546", "transDate" : "1/1/16", "merchant" : "Publix", "mtype" : "Groceries", "merchantCode" : "1", "transAmount" : 100 }
{
"_id" : ObjectId("5919f19716e64ad662bd753b"),
"cardNumber" : "11111111115523",
"transID" : "5645344133546",
"transDate" : "1/1/16",
"merchant" : "Publix",
"mtype" : "Groceries",
"merchantCode" : "1",
"transAmount" : 100
}
/* 2 */
{
"_id" : ObjectId("5919f20416e64ad662bd753c"),
"cardNumber" : "11111111115523",
"transID" : "5645344136544",
"transDate" : "1/4/16",
"merchant" : "Sears",
"mtype" : "Clothing and Shoes",
"merchantCode" : "2",
"transAmount" : 150.66
}
/* 3 */
{
"_id" : ObjectId("5919f20c16e64ad662bd753d"),
"cardNumber" : "11111111115523",
"transID" : "564535522233344",
"transDate" : "1/4/16",
"merchant" : "Shell",
"mtype" : "Gasoline / Fuel",
"merchantCode" : "3",
"transAmount" : 25
}
我想要的结果是:
所有“transAmount”的总和乘以100,再除以此人花费的总额(例如:(totalByCategories)*100/(sumOfAllTransactiosAmount)),然后输出需要按“merchantCode”排序,以便每个子集都有类别和相应的操作结果。我让它们单独工作,但当我尝试进行完整查询时,它给出了一个错误代码16420聚合失败 下面是我的查询的样子:
var denominator = db.getCollection('Transactions').aggregate({
$group: {
"_id": null,
"total": {$sum:"$transAmount"}
}
}, { $project: {_id:0, total: "$total"}});
db.getCollection('Transactions').aggregate([{
$group: {
_id: '$merchantCode',
total: {
$sum: { $multiply: ['$transAmount', 100 ]}
}}},
{ $project: {
percentage: {
$divide: [
"$total",
denominator
]
}
}
}
])
提前感谢您的帮助分母的值是多少?在这种情况下,数据仅为275.66,因为是所有“transAmount”的总和,但在操作中,我认为由于某些原因未定义,我不知道如何修复它。聚合返回“游标”,而不是单个响应。您正试图将其分配给分母为
的单数值。相反,您需要var denominator=db.getCollection('Transactions').aggregate({“$group”:{“\u id”:null,“total”:{“$sum”:“$transAmount”}}}}}。)toArray()[0]。amount
这只是来自单元素数组响应的total
属性的值。非常感谢,我通过添加“denominator.toArray()[0]。操作本身中的“总计”。祝您愉快,编码愉快!