[英]MongoDB aggregate accounting info
我對MongoDB聚合完全陌生。 目前,我有一個集合,其中保存了一些帳戶名:
帳戶 :_id:ObjectId; 名稱:字符串
示例:項目:ObjectId(...)“銀行帳戶”等
最重要的是,我有一個日記帳集合,其中存儲了會計日記帳分錄。 他們看起來如下:
日記帳 :_id:對象編號;借方:(請參閱帳戶ID);貸方:(請參閱帳戶ID); 量
這個想法是,我保存如下的會計條目:借方:(“銀行帳戶”的ID),貸方:(“股本”的ID)
現在,我嘗試使用匯總來獲取所有帳戶類型的總借方,總貸方和總金額(借方貸方)。
現在,我將這種情況僅適用於一種特定的帳戶類型:
db.journals.aggregate(
{ $project: {
_id: 0,
PosSentiment: {$cond: [{$eq: ['$debit', ObjectId("5a809cf86ce518470ec92502")]}, '$amount', 0]},
NegSentiment: {$cond: [{$eq: ['$credit', ObjectId("5a809cf86ce518470ec92502")]}, '$amount', 0]}
}},
{ $group: {
_id: 0,
debit: {$sum: '$PosSentiment'},
credit: {$sum: '$NegSentiment'}
}});
不幸的是,這只能為我在ObjectId中指定的一種類型的帳戶提供貸方和借方,我沒有總計,我必須為每個帳戶運行。
是否有可能使用匯總來得出如下結果:[{_ id:...,名稱(來自帳戶收集),totaldebit,totalcredit,total}]?
非常感謝你!
您可以使用以下聚合。
db.journals.aggregate([
{"$lookup":{
"from":"accounts",
"localField":"debit",
"foreignField":"_id",
"as":"debit"
}},
{"$lookup":{
"from":"accounts",
"localField":"credit",
"foreignField":"_id",
"as":"credit"
}},
{"$project":{
"data":[
{name:"$debit","type":"debit"},
{name:"$credit","type":"credit"}
],
"amount":1
}},
{"$unwind":"$data"},
{"$group":{
"_id":{"account":{"$arrayElemAt":["$data.name",0]},"type":"$data.type"},
"total":{"$sum":"$amount"}
}},
{"$group":{
"_id":"$_id.account._id",
"name":{"$first":"$_id.account.name"},
"balances":{$push:{"type":"$_id.type","total":"$total"}},
"alltotal":{"$sum":"$total"}
}}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.