首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB汇总会计信息

MongoDB汇总会计信息
EN

Stack Overflow用户
提问于 2018-02-15 21:02:34
回答 1查看 457关注 0票数 0

我对MongoDB聚合完全陌生。目前,我有一个集合,其中保存了几个帐户名:

accounts:_id: ObjectId;name: String

示例:项目:ObjectId(.)“银行帐户”等

最重要的是,我有一个日记账收集,在其中我存储会计日记账分录。它们看起来如下:

日记账:_id: ObjectId,借方:(参考帐户id),贷方:(参考帐户id);金额

我的想法是,我保存的会计分录如下:借方:(“银行账户”的Id),信贷:(“股本”的Id)

现在,我试图使用所有帐户类型的总借方、总贷款额和总金额(借方-贷方)。

现在,我只对一种特定的帐户类型使用类型的

代码语言:javascript
复制
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:.,名称(来自帐户集合)、总借方、总贷方、总计}

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-02-16 03:56:48

您可以使用下面的聚合。

代码语言:javascript
复制
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"}
  }}
])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48816217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档