MongoDB查询-聚合和嵌入式文档

齿轮

需要一些帮助来编写MongoDB查询。

背景:我正在构建一个跟踪捐款的应用程序。我在ExpressJS中创建了一个API,并且正在使用Mongoose连接到MongoDB。

我有一个名为Donations的MongoDB集合,看起来像这样:

[
    {
        donor: 123,
        currency: 'CAD',
        donationAmount: 50
    },
    {
        donor: 123,
        currency: 'USD',
        donationAmount: 50
    },
    {
        donor: 789,
        currency: 'CAD',
        donationAmount: 50
    },
    {
        donor: 123,
        currency: 'CAD',
        donationAmount: 50
    }
]

对于每个捐赠者,我需要总结每种货币的捐赠总额。理想情况下,我想要一个可以产生以下数据集的MongoDB查询。(我对结构很灵活……我唯一的要求是结果中:1)每个捐赠者只有一个且只有一个文档; 2)此文档包含每种货币类型的总和)

[
    {
        donor: 123,
        donations: [
            {
                CAD : 100,
            },
            {
                USD : 50
            }
        ]
    },
    {
        donor: 789,
        donations: [
            {
                CAD: 50
            }
        ]
    },
]

关于最佳方法的任何想法?我现在的解决方案很丑陋-如果不执行多个查询就无法实现。

米克尔

您可以运行$ group两次,并使用$ arrayToObject动态构建密钥:

Model.aggregate([
    { $group: { _id: { donor: "$donor", currency: "$currency" }, sum: { $sum: "$donationAmount" } } },
    { $group: { _id: "$_id.donor", donations: { $push: { $arrayToObject: [[{ k: "$_id.currency", v: "$sum" }]] } } } },
    { $project: { _id: 0, donor: "$_id", donations: 1 } }
])

蒙哥运动场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查询MongoDB中的嵌入式文档

MongoDB嵌入式文档:大小限制和聚合性能问题

mongodb聚合中的项目嵌套嵌入式文档

嵌入式文档的$ divide元素-MongoDB聚合

在文档中引用文档的嵌入式数组的嵌入式数组上查询Doctrine2和MongoDB

使用聚合查询获取具有总交易数和交易明细的用户列表作为嵌入式文档

回送和MongoDB嵌入式文档定义JSON模型

MongoDB对数组和嵌入式文档的条件验证

具有嵌入式文档的MongoDB findOne()和updateOne()

MongoDB嵌入式文档的区别和过滤器

MongoDB嵌入式文档自我查询

基于范围查询MongoDB中嵌入式文档的数组

如何在 MongoDb 中查询嵌入式文档?

查询Spring Data MongoDB中嵌入式文档的数组

使用Presto查询MongoDB嵌入式/嵌套文档的数组

MongoDB查询以查找多个嵌入式文档

Hibernate repo 查询以访问 mongodb 嵌入式文档

MongoDB:与查询不匹配的嵌入式文档

如何在嵌入式数组mongodb中查询嵌入式文档

MongoDB聚合:通过动态字段路径从嵌入式文档添加字段

根据mongoDB聚合中的条件,项目嵌入式文档密钥值

MongoDB - 带有嵌入式文档的自定义排序聚合

Mongodb:如何使用聚合框架仅返回嵌入式文档

通过MongoDB中的聚合框架将嵌入式对象作为文档检索

Mongodb聚合与猫鼬过滤器嵌入式文档

Mongo嵌入式文档查询

mongoid-查询嵌入式文档

流星-查询嵌入式文档

春季查询嵌入式文档的数组