簡體   English   中英

MongoDB匯總會計信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM